我在Parse上有Post
和Topic
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
主题。
答案 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" />