从下面的代码中,我希望每次运行save()
函数时控制台值都会增加。但是,该号码不会更新。所以我没有看到任何创建的值在创建时注入到商店中。
Budget = DS.defineResource('budget')
function save(){
Budget.create(this.budgetItem, {upsert: true})
.then( ( ) => {
Budget.findAll().then((data)=>console.log(data.length))
})
}
我正在使用jsdata-angular。
第一次保存findAll()
后,它将从服务器检索记录,然后缓存它们。之后,在执行findAll()时,它不会在将来调用服务器(这是预期的行为),但它也不会将新创建的值注入到存储中。
我的所有配置都保持不变。我正在使用所有默认值。
答案 0 :(得分:0)
DS#findAll
用于通过适配器从持久层检索记录并将其加载到存储中。默认情况下,如果您进行findAll
调用,然后再次进行完全相同的findAll
调用(使用相同的query
参数),那么JSData将返回给您,而不是发出新请求原来的结果。您可以通过两种方式更改此行为:
useFilter
设置为true
以进行findAll
调用DS#filter
并将结果返回给您。bypassCache
设置为true
以强制通过适配器重新加载数据。作为一般经验法则,findAll
用于将记录异步加载到商店中(例如,通过HTTP适配器GET请求),filter
用于在需要时同步选择商店外的记录它们(例如在你的视图中显示)。
例如,在一个地方你可以:
// Post records get retrieved and loaded into the store
store.findAll('post', { status: 'published }).then(...);
然后在其他地方:
// Need to display post records in your View
$scope.posts = store.filter('post', { status: 'published' });