我有一组对象(POI),这些对象有几个不同的对象类数组。 我只需要获取一个de POI,因为我已经更新了它,但是如果我尝试
mycollection.at(indexOfPOI).fetch();
没有检索到数组对象,并且它们的属性是未定义的。但是如果我试试这个
mycollection.fetch();
所有对象都保存在集合中。
是否有任何选项可以避免获取所有集合?
如果您只需要更新一个POI,则下载n POI的效率非常低。
感谢您的帮助,请原谅我的英语水平。
编辑:
抱歉,我认为我可以更明确。 在没有复制大量行的情况下显示我的代码的更大示例是相当复杂的。 总之,我有一个解析类,#POI',它包含指向其他类的指针数组,例如'图像'文本'或者' audio'这些类包含一个文件。
我修改POI,添加新指针或删除另一个指针,然后重新加载。 ' self.manageViewControl.collection'是POI集合(扩展Parse.Collection)。如果我喜欢你可以在下面看到,它可以工作,但显然如果没有必要确定所有POI会更好。 如果我通过this.model.fetch()更改collection.fetch() - this.model是当前的POI-,添加的元素不能正确更新,例如' done'属性未定义。
我认为这可能是因为Parse.View,这取决于集合,如果您只获取模型,则不能正确更新整个结构。
谢谢!
addElement: function() {
var name = "";
var array;
var self = this;
var r = 'text';
var lowercaseType;
var uppercaseType;
var defaultName = "nuevo Audio";
item = new Audio({
name: name,
done: false,
user: Parse.User.current(),
ACL: new Parse.ACL(Parse.User.current())
});
name = prompt("Por favor introduce el nombre del objeto", defaultName);
if (name != null) {
array = this.model.get("audio");
item.set('name', name);
for (i = 0; i < self.manageViewControl.collection.length; i++) {
if (self.manageViewControl.collection.at(i).id == self.model.id) {
index = i;
break;
}
}
item.save(null, {
success: function(item) {
alert('\"' + name + '\"' + ' ha sido creado con éxito.');
array.push({"__type":"Pointer","className":"Audio","objectId":item.id});
self.manageViewControl.collection.at(index).save({audio: array}, {
success: function() {
self.reload();
},
error: function(item, error) {
alert('Error al actualizar el POI: ' + error.message);
}
});
},
error: function(item, error) {
alert('Error al crear el objeto: ' + error.message);
}
});
}
}
},
reload: function() {
var self = this;
self.manageViewControl.collection.query = new Parse.Query(POI).include('text').include('images').include('model3D.textures').include('audio');
var index;
self.manageViewControl.collection.fetch( {
success: function(results) {
},
error: function(error) {
alert('Error');
}
});
},