在创建对象存储库时省略idProperty时,为什么添加到内存存储库的后续对象获取id属性,但是在创建内存存储库时使用的对象却没有?
例如
var employees = [{
name: "Krishna",
topic: "Sales"
}, {
name: "Mohhamad",
topic: "Sales"
}];
var employeeStore = new Memory({
data: employees,
});
employeeStore.add({ name: "Joe", topic: "Marketing" });
我的数据包含以下对象
{
name: "Krishna",
topic: "Sales"
},
{
name: "Mohhamad",
topic: "Sales"
},
{
id: 0.8244685191447396,
name: "Joe",
topic: "Marketing"
}
答案 0 :(得分:1)
查看dojo/store/Memory.js
您会注意到setData
(最初执行以将原始数据放入商店的方法)不依赖于商店的put
方法。
它只是循环遍历给定的对象并创建索引,期望idProperty
在那里。
如果你的情况,因为你没有提供idProperty
,我认为索引完全搞砸了。所有索引都将映射到undefined
(参见dojo/store/Memory.js
的第159行)。
但是,put
方法是将{a}值添加到idProperty
(如果缺少)。这就是你在问题中描述的内容。
作为一种解决方法,您可以:
setData
setData
,然后遍历初始对象并对所有这些对象使用put