在解析中查询指向同一个类的指针

时间:2015-11-02 15:46:42

标签: javascript pointers parse-platform

我有一个名为TreeFolderObject的子类。其中一个列标题称为“父”,是一个指针字段。它指向同一个类中的另一个对象。这是我用来尝试从这个结构中读取数据的精简代码:

        var TreeFolderObject = Parse.Object.extend('TreeFolderObject');
        var folderQuery = new Parse.Query(TreeFolderObject);
        folderQuery.include("parent");
        folderQuery.find().then(function(results) {
                for (i in results) {
                    treeData.push({
                        title: results[i].get('folderName'),
                        objectId: results[i].id,
                        parent: results[i].get("parent")
                    });
                    console.log(results[i].get("parent").get("folderName") );
                }
            },
            function(error) {
                console.log("failed, with error code: " + error);
            }
        );

控制台行报告以下输出:

未捕获的TypeError:无法读取未定义的属性'get'

我也尝试将console.log行缩短为:

console.log(results[i].get("parent") );

并报告以下内容:

undefined
index.html:100 
ParseObjectSubclass {className: "TreeFolderObject", _objCount: 32, id: "oq5o2zFqIM"}

index.html:100 ParseObjectSubclass {className: "TreeFolderObject", _objCount: 24, id: "oq5o2zFqIM"}

index.html:100 ParseObjectSubclass {className: "TreeFolderObject", _objCount: 41, id: "oq5o2zFqIM"}


etc

这表示浏览器客户端正在获取我之后的信息。如果有意义的话,我就无法弄清楚如何将数据“输出”。

最终,我想识别每个对象的父对象,以便我可以遍历该类。

我做错了什么?我一直尝试在这里和网上搜索,并且有很多非常相似的问题。这显然是一个令人困惑的话题。我只是不能解决它,任何帮助将不胜感激。如何让控制台打印出父对象的folderName属性?

以下是解析控制面板的屏幕截图,如果有帮助的话:

enter image description here

2 个答案:

答案 0 :(得分:0)

在我面前添加“var”

    var TreeFolderObject = Parse.Object.extend('TreeFolderObject');
    var folderQuery = new Parse.Query(TreeFolderObject);
    folderQuery.include("parent");
    folderQuery.find().then(function(results) {
            for (var i in results) {
                treeData.push({
                    title: results[i].get('folderName'),
                    objectId: results[i].id,
                    parent: results[i].get("parent")
                });
                console.log(results[i].get("parent").get("folderName") );
            }
        },
        function(error) {
            console.log("failed, with error code: " + error);
        }
    );

答案 1 :(得分:0)

在这里回答我自己的问题:

我最终发现了答案,它与将我标记为var或者我正在查询同一个类的事实无关。解决方案是在查询中放置一个条件行。换句话说,在我之前发布的代码的前两行之后插入它:

folderQuery.exists( “父”);

在我的情况下,类中的每个对象除了一个之外都有一个父对象,所以这个工作正常。我不明白的是,如果我打算查询整个类,为什么有必要对查询设置一个条件。

在StackOverflow上浏览了大量与解析指针相关的问题后,我发现了解决方案。没有其他人似乎陷入了遗漏条件行的完全相同的陷阱,最终我意识到我的解析查询不符合约定。如果这种认识能够帮助其他人,我将很乐意帮助你!

如果有人可以帮我解释为什么我需要设置条件,即使我在查询全班,请告诉我。与此同时,我很高兴找到了这个解决方案,因为它阻碍了我项目的开发。