一旦存在 idAttribute = '_id',从 backbone collections 检索模型时出错
Error retrieving models from backbone collections once there is idAttribute = '_id'
我有一个模型用户设置如下:
User = Backbone.Model.extend({
urlRoot: '/users',
defaults: {
id: '',
username: '',
password: ''
},
idAttribute: '_id',
initialize: function () {
console.log('User initiated');
}
});
而Collection是这样的:
var Users = Backbone.Collection.extend({
url: "/users",
model: User,
});
Users = new Users();
然后当我尝试使用
Users.fetch()
,无论后端有多少结果,我都只会在 "collection" 数组中返回一个结果。
但是,在我从 Model User 中删除 idAttribute: '_id' 之后,我得到了作为后端的准确结果数。
有人知道为什么会这样吗?
p.s。
当我进入控制台时,似乎 Users.fetch() 被触发的次数与我拥有的用户数量相同(每次回调 collection 中只有 1 个模型)。所以基本上最后一次调用会覆盖所有以前的调用并且只显示最后一个结果。
但我仍然不知道到底发生了什么。
这通常发生在您的 id 属性未为所有模型定义或其他值相同时。检查值 _id
在响应中是否已定义且不同。
编辑:
您确定您没有尝试在不带下划线的情况下引用 id
吗?如果是这种情况,您可以省略 idAttribute
属性,因为 id
是默认值。
我有一个模型用户设置如下:
User = Backbone.Model.extend({
urlRoot: '/users',
defaults: {
id: '',
username: '',
password: ''
},
idAttribute: '_id',
initialize: function () {
console.log('User initiated');
}
});
而Collection是这样的:
var Users = Backbone.Collection.extend({
url: "/users",
model: User,
});
Users = new Users();
然后当我尝试使用
Users.fetch()
,无论后端有多少结果,我都只会在 "collection" 数组中返回一个结果。
但是,在我从 Model User 中删除 idAttribute: '_id' 之后,我得到了作为后端的准确结果数。
有人知道为什么会这样吗?
p.s。 当我进入控制台时,似乎 Users.fetch() 被触发的次数与我拥有的用户数量相同(每次回调 collection 中只有 1 个模型)。所以基本上最后一次调用会覆盖所有以前的调用并且只显示最后一个结果。
但我仍然不知道到底发生了什么。
这通常发生在您的 id 属性未为所有模型定义或其他值相同时。检查值 _id
在响应中是否已定义且不同。
编辑:
您确定您没有尝试在不带下划线的情况下引用 id
吗?如果是这种情况,您可以省略 idAttribute
属性,因为 id
是默认值。