Ember.js Ember data store.find()在使用无效id调用时创建空项

Ember.js Ember data store.find()在使用无效id调用时创建空项,ember.js,ember-data,Ember.js,Ember Data,我有一个绑定到由DS.RecordArray支持的模型的列表,正如Ember数据样本js fiddle所使用的那样。当我使用有效id调用this.store.find({id})时,一切都按预期进行。但是,当我使用不存在的id或空字符串调用this.store.find({id})时,一个空模型被添加到DS.RecordArray,它反映在我的绑定列表中 我在一个案例中创建了一个这种行为的例子。我的示例有两个按钮来展示两个案例: 调用find('post',14),其中14表示不存在的id。在这

我有一个绑定到由
DS.RecordArray
支持的模型的列表,正如Ember数据样本js fiddle所使用的那样。当我使用有效id调用
this.store.find({id}
)时,一切都按预期进行。但是,当我使用不存在的id或空字符串调用
this.store.find({id})
时,一个空模型被添加到
DS.RecordArray
,它反映在我的绑定列表中

我在一个案例中创建了一个这种行为的例子。我的示例有两个按钮来展示两个案例:

  • 调用
    find('post',14)
    ,其中14表示不存在的id。在这种情况下,按下此按钮一次将向列表中添加一个空白元素,随后的按下将不起任何作用
  • 调用
    find('post','')
    ,其中传递的是空字符串而不是id。在这种情况下,每次按下此按钮时,都会向列表中添加一个空白元素
  • 这是预期的行为吗?如果是这样的话,避免列表中出现这些空元素的最佳方法是什么?

    store.find(“type”,id)将委托给store.findById(type,id),后者调用store.recordForId(type,id)。如果您签出recordForId()的函数体,您将看到它检查类型映射中的id,如果它不存在,则调用buildRecord(type,id),这将创建该类型的记录并将其添加到类型映射中

    这是预期的行为,因为它显然是有意这样做的,但这是否是一个好主意还是一个不争的问题

    对于我的应用程序来说,这不是一个好主意,因此我将id为truthy的store.findById重写为Ember.assert(),因为我从不尝试查找id为0、null或未定义的记录