从下面的代码可以看出,每次运行save()函数时,控制台的值都会增加。但是,该数字不会更新。所以我没有看到任何创建的值被注入到create的存储中。
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()时,它不再调用服务器(这是预期的行为),但是它也不会将新创建的值注入到存储中。
我的所有配置都保持不变。我正在使用所有的默认值。
发布于 2016-10-22 00:40:17
DS#findAll用于通过适配器从持久层检索记录并将其加载到存储中。默认情况下,如果您执行findAll调用,然后再次执行完全相同的findAll调用(使用相同的query参数),那么JSData将返回原始结果,而不是发出新请求。您可以通过两种方式更改此行为:
useFilter设置为true可让findAll调用DS#filter并向您返回结果。bypassCache设置为<代码>D13以强制通过适配器重新加载数据。根据一般经验,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' });https://stackoverflow.com/questions/37647014
复制相似问题