无法从集合中获取数组对象

时间:2014-07-18 12:00:45

标签: javascript parse-platform

我有一组对象(PO​​I),这些对象有几个不同的对象类数组。 我只需要获取一个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');
        }
    });
},

0 个答案:

没有答案