如何将删除推送到本地微风缓存?

时间:2015-01-23 19:16:39

标签: breeze

如果我使用breezejs并且一个客户端从其缓存中删除了一条记录并将其保存到服务器,那么另一个客户端仍然在缓存中出现该记录,如何获得第二个客户端'用于更新和删除已被硬删除的记录的缓存?

1 个答案:

答案 0 :(得分:0)

这是一个很好的问题,我们没有一个非常好的答案。我们将这些称为“幽灵”实体,我们过去采用的方法是,如果您通过id 重新查询实体(或实体),则不会返回它们可以安全地从entityManager中删除它们。 (下面的代码尚未经过测试,但应该给你一个想法);

function checkIfDeleted(entityManager, entities) {
  origEntities = entities.slice(0);
  var q = EntityQuery.fromEntities(entities);
  entityManager.executeQuery(q).then(function(data) {
    var foundEntities = data.entities;
    foundEntities.forEach(function(e, ix) {
      if (entities.indexOf(e)) {
        origEntities.splice(ix,1)
      }
    });
    if (origEntities.length > 0) {
      origEntities.forEach(function(e) {
        entityManager.removeEntity(e);
      });
    }
  });
}