要使缓存起作用,需要哪些微风设置? [英] What breeze settings are needed to make caching work?

查看:71
本文介绍了要使缓存起作用,需要哪些微风设置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我认为Breeze会自动缓存,但是在下面的简单测试中却无法正常工作。

I thought that Breeze does caching automatically, but in my simple test below it does not work. What other settings are needed to make this happen?

var dataService = new breeze.DataService({
    serviceName: 'api',
    hasServerMetadata: false
});

var manager = new breeze.EntityManager({ dataService: dataService });
var metadataStore = manager.metadataStore;

console.log('before fetch', manager.getEntities());// returns [] as expected

var query = breeze.EntityQuery.from("ContentTypes");
manager.executeQuery(query).then(function(data) {
    console.log(data.results.length); // 3
    console.log('after fetch', manager.getEntities()); // still []. why???
});


推荐答案

在文档中进一步阅读后,我发现没有元数据关于对象, Breeze将不进行缓存

After reading further in the documentation I see that without metadata about the objects, Breeze will do no caching:


它们将是简单的JavaScript对象,而不是实体。 Breeze不会缓存它们,跟踪它们的更改,验证它们,等等。Breeze仅充当HTTP检索机制,而已不再起作用。

They will be simple JavaScript objects, not entities. Breeze won't cache them, track their changes, validate them, etc. Breeze is acting only as an HTTP retrieval mechanism and no more.

以下是我的示例代码的更新(工作)版本:

Below is an updated (working) version of my sample code:

var dataService = new breeze.DataService({
    serviceName: 'api',
    hasServerMetadata: false
});

var manager = new breeze.EntityManager({ dataService: dataService });
manager.metadataStore.addEntityType({
    shortName: "ContentType",
    namespace: "MyCompany.MyProduct.Models",
    autoGeneratedKeyType: breeze.AutoGeneratedKeyType.None,
    dataProperties: {
        Name: { dataType: breeze.DataType.String, maxLength: 30, isNullable: false, isPartOfKey: true },
        Description: { dataType: breeze.DataType.String, maxLength: 60, isNullable: false }
    }
});

//
// these lines are the same as before, but now they work because of the metadata
//
console.log('before fetch', manager.getEntities()); // returns [] as expected

var query = breeze.EntityQuery.from("ContentTypes");
manager.executeQuery(query).then(function(data) {
    console.log(data.results.length); // 3
    manager.addEntity(data.results[0]);
    console.log('after fetch', manager.getEntities()); // now it returns 3 entities
});

这篇关于要使缓存起作用,需要哪些微风设置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆