代码之家  ›  专栏  ›  技术社区  ›  Sam

微风:getEntityGraph中出现意外错误

  •  2
  • Sam  · 技术社区  · 11 年前

    我使用getEntityGraph扩展,它工作正常,但以下情况除外:

    1. 添加新实体
    2. 不保存它并在实体上调用setDeleted
    3. 通过传递实体和np集合作为参数来调用getEntityGraph

    调用makePathSegmentFn时,它将在以下行崩溃:

     grps.forEach(function(grp) {
         vals = vals.concat(grp._entities.filter(function (en) {
           return en.getProperty(fkName) === keyValue;         
       }));
     });
    

    en 为null,因此引发异常。我已经通过检查en是否为空来解决这个问题,并且每一个看起来都很好。但如果这是一个bug,也许应该在原始代码中完成?注意,在np集合中的所有实体中,只有一个实体为空。我想这就是被删除的那个,但不能肯定。

    1 回复  |  直到 11 年前
        1
  •  2
  •   Community CDub    4 年前

    2014年4月29日更新

    好啊我现在明白了。你说的是一个已删除的 小孩 实体,而不是分离的 实体

    感谢您识别此错误。我在DocCode中添加了这个场景的测试,然后修复了这个bug。这两项更改都推送给github。它们将出现在下一个官方版本中。你可以 get the current getEntityGraph.js from github 马上

    原答覆

    我无法复制你描述的特定失败。。。因为 getEntityGraph 在到达 makePathSegmentFn ... 就像它应该做的那样!

    获取实体图 应该引发异常(例如,“ “getEntityGraph”根[0]是分离的实体 “)当 任何 传入的根实体为“已分离”。

    当您创建一个新实体并立即删除它(而不首先保存它)时,它的状态将从“已添加”更改为“已分离”;它不再是缓存中的实体。这是预期的行为(请参见 "Inside the Entity" documentation topic ). 这就是当我完全按照你的步骤做的时候。

    请提供一个jsFiddle或punker来说明错误。