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