Parse.com - .get()返回[object Object]?

时间:2015-09-15 03:03:36

标签: parse-platform cloud-code

我在Parse上有PostTopic s。有大约20个不同的Topic s - 每个Post以数组关系存储最多5个。{/ p>

更新Post后,我需要检查分配给它的Topic并可能发送通知。

所以我写了这个:

Parse.Cloud.afterSave("Post", function(request) {
    Parse.Cloud.useMasterKey();
    var postObject = request.object;
    var postTitle  = postObject.get("title");
    var topics     = postObject.get("topic");
    var topicCount = topics.length;

    console.log("Post with title " + postTitle + " has " + topicCount + " topics: " + topics);

    // code continues to push logic,
    // but already the log above is wrong, so I'll leave that off.
}

例如,如果我发布一个标题为“保时捷瞄准特斯拉”的帖子,并给它一个主题,一个用于“技术”,我希望它记录如下:

Post with title Porsche Takes Aim at Tesla has 1 topics: tech

但是,当我这样做时,它会记录:

Post with title Porsche Takes Aim at Tesla has undefined topics: [object Object]

我做错了什么?文档建议当您使用数组字段的名称调用get时,它应该返回一个JavaScript数组。相反,它似乎返回一个没有任何属性或内容的空白JavaScript对象。

我只是需要某种方式来查看附加了哪些主题并通过它们进行迭代。

请注意,我知道正确创建此对象,因为我可以在数据浏览器中看到它。导航到Post,然后点击View Relationship下的topic,即可告诉我它已正确连接到tech主题。

1 个答案:

答案 0 :(得分:2)

首先:JSON.stringify()并不意味着该对象为空。使用postObject.set("topic", arrayWithTopicsInside)查看其内容。

据我所知,话题是一个对象。在这种情况下,您不应期望它被打印为“技术”。我想你的意思是这个话题的一些属性,比如“name”。

设置主题可能还有问题。确保始终使用类似Parse.Cloud.afterSave("Post", function(request) { Parse.Cloud.useMasterKey(); var postObject = request.object; var postTitle = postObject.get("title"); var topics = postObject.get("topic"); Parse.Object.fetchAll(topic).then(function(topics) { var topicNames = [] _.each(topics, function(topic) { var name = topic.get("name"); names.push(name); }); console.log("Post with title " + postTitle + " has " + topicNames.count + " topics: " + topicNames); }, function(error) { concole.log("error fetching objects" + JSON.stringify(error)); }); } 的内容,因为我认为您已将此设置为不在数组中的主题。您可能需要删除该列,以便可以使用其他类型添加该列。

我认为它应该是这样的:

<uses-permission android:name="android.permission.WRITE_SETTINGS" />