存储在emberjs中,不从服务器加载最新数据(如果在服务器端删除)

培育

/users我的余烬应用程序中有一个URL。RESTAdapter用来从服务器获取数据。users加载显示列表的模板时,它会从服务器加载最新的更新数据(例如,如果我在users表的一行中进行更改,例如更改用户名,则该更改会反映在前端以及)。但是,如果我从数据库中删除该用户,那么该用户仍会在前端的用户列表中

用于用户路由的模型挂钩仅返回服务器中的用户列表:

this.store.find('user').then(onSuccess, onError);

当我尝试对已删除的用户执行任何操作时(例如在前端更新其名称),我得到一个错误(这很明显,因为该用户不再在数据库中,并且服务器以适当的错误进行响应)。如何强制emberjs加载数据库中存在的用户列表,而不仅限于本地ember数据存储中?此外,为什么本地余烬数据存储与数据库同步以进行更新(以及添加),但不进行删除?

ppcano

该问题在github问题上进行了解释

商店为每种模型类型都有一个缓存,然后当商店使用_findAll方法方法获取数据时,它不假定正在返回所有数据,因此将应用以下步骤

store.pushMany(type, payload); // push the server response data to the local store
store.didUpdateAll(type); // update record with the most up-to-date record     
return store.all(type);  // return all the record in the local store

它将不考虑本期中讨论的任何记录删除,在这种情况下,如果找不到具有相同primaryKey的记录,则新的响应数据将被添加到本地存储中;否则,它将更新本地副本。

我创建了一个测试来检查定义的行为:

test('store.findAll不管理记录删除',function(){

$ .mockjaxClear();

$ .mockjax({url:'/ categories',dataType:'json',responseText:{

 categories:[
    {id: 1, name: "Name1"},
    {id: 2, name: "Name2"}
   ]}});

var store = this.store();
停();
store.find('category')。then(function(result){

  equal(result.get('length'), 2, 'the new item returned with ajax is added to the local store');

  $.mockjaxClear();
  $.mockjax({ url:  '/categories', dataType: 'json', responseText: {
      categories:[
          {id: 3,  name: "Name3"},
  ]}});

  store.find('category').then(function(result) {

      equal(result.get('length'), 3);

      $.mockjaxClear();
      $.mockjax({ url:  '/categories', dataType: 'json', responseText: {
          categories:[
              {id: 3,  name: "Name4"},
           ]}});

      store.find('category').then(function(result) {

          equal(result.get('length'), 3);
          equal(result.objectAt(2).get('name'), 'Name4', 'the old item returned with the new ajax request updates the local store');

          start();

      });

});

});

});

正如您指出的那样,诸如find('modelName',{})之类的东西可以解决您的问题:

this.store.find('user', {})

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如果在执行过程中删除了带有服务器端代码的文件,该怎么办?

来自分类Dev

会话数据如何存储在服务器端的NodeJS中?

来自分类Dev

如果在 3 层应用程序中删除了 Web 服务器,则架构建议

来自分类Dev

Web服务的服务器端数据推送

来自分类Dev

客户端数据到服务器端

来自分类Dev

服务器端重定向(如果未登录)

来自分类Dev

如果在Scrapy中收到500个内部服务器错误,如何跳过URL?

来自分类Dev

用ajax或服务器端加载图像

来自分类Dev

服务器端资源文件加载

来自分类Dev

在服务器端加载资源失败

来自分类Dev

存储服务器端倒计时变量

来自分类Dev

数据存储为VARCHAR vs INT,“转换”服务器端vs客户端

来自分类Dev

从Windows Server证书存储中加载服务器端证书*和*私钥?

来自分类Dev

从Windows Server证书存储区加载服务器端证书*和*私钥?

来自分类Dev

删除服务器端未表示的实体

来自分类Dev

实施添加,更改和删除的服务器端

来自分类Dev

如何在共享服务器服务中运行服务器端Javascript?

来自分类Dev

从服务器端在引导数据表中加载数据

来自分类Dev

数据表aoColumnDefs无法加载服务器端数据

来自分类Dev

服务器端数据模型:是在数据库中还是作为对象加载?

来自分类Dev

Socket.io在服务器端丢失数据

来自分类Dev

服务器端对Firebase数据的过滤

来自分类Dev

使用REST在服务器端保存数据

来自分类Dev

使用异步数据获取的服务器端渲染

来自分类Dev

服务器端Yajra数据表列:[]操作

来自分类Dev

Nuxt:仅在服务器端获取数据

来自分类Dev

使用哪个,会话,Cookie,服务器端数据?

来自分类Dev

如何从服务器端的jQuery Ajax检索“数据”?

来自分类Dev

服务器端的jQuery多种数据解码

Related 相关文章

  1. 1

    如果在执行过程中删除了带有服务器端代码的文件,该怎么办?

  2. 2

    会话数据如何存储在服务器端的NodeJS中?

  3. 3

    如果在 3 层应用程序中删除了 Web 服务器,则架构建议

  4. 4

    Web服务的服务器端数据推送

  5. 5

    客户端数据到服务器端

  6. 6

    服务器端重定向(如果未登录)

  7. 7

    如果在Scrapy中收到500个内部服务器错误,如何跳过URL?

  8. 8

    用ajax或服务器端加载图像

  9. 9

    服务器端资源文件加载

  10. 10

    在服务器端加载资源失败

  11. 11

    存储服务器端倒计时变量

  12. 12

    数据存储为VARCHAR vs INT,“转换”服务器端vs客户端

  13. 13

    从Windows Server证书存储中加载服务器端证书*和*私钥?

  14. 14

    从Windows Server证书存储区加载服务器端证书*和*私钥?

  15. 15

    删除服务器端未表示的实体

  16. 16

    实施添加,更改和删除的服务器端

  17. 17

    如何在共享服务器服务中运行服务器端Javascript?

  18. 18

    从服务器端在引导数据表中加载数据

  19. 19

    数据表aoColumnDefs无法加载服务器端数据

  20. 20

    服务器端数据模型:是在数据库中还是作为对象加载?

  21. 21

    Socket.io在服务器端丢失数据

  22. 22

    服务器端对Firebase数据的过滤

  23. 23

    使用REST在服务器端保存数据

  24. 24

    使用异步数据获取的服务器端渲染

  25. 25

    服务器端Yajra数据表列:[]操作

  26. 26

    Nuxt:仅在服务器端获取数据

  27. 27

    使用哪个,会话,Cookie,服务器端数据?

  28. 28

    如何从服务器端的jQuery Ajax检索“数据”?

  29. 29

    服务器端的jQuery多种数据解码

热门标签

归档