例如,如何在Parse.com REST云代码中实现多对多的“组成员资格”?

时间:2014-05-27 21:59:58

标签: api rest associations parse-platform

用户可以创建群组 一个组必须由用户创建

用户可以属于多个组 一个组可以有多个用户

我有以下内容:

Parse.Cloud.afterSave('Group', function(request) {

var creator = request.user;
var group = request.object;
var wasGroupCreated = group.existed;

if(wasGroupCreated) {

    var hasCreatedRelation = creator.relation('hasCreated');
    hasCreatedRelation.add(group);

    var isAMemberOfRelation = creator.relation('isMemberOf');
    isAMemberOfRelation.add(group);

    creator.save();
}
});

现在,当我使用include = isMemberOf,hasCreated来获取user / me时,它会返回用户对象但是具有以下内容:

hasCreated: {
__type: "Relation"
className: "Group"
},
isMemberOf: {
__type: "Relation"
className: "Group"
}

我希望将群组对象包括在内,' hasCreated'并且' isMemberOf'阵列。如何使用REST API提取它?

一般情况下,我是否正确地接近这个?思考?非常感谢帮助!

1 个答案:

答案 0 :(得分:0)

首先,existed是一个返回true或false的函数(在您的情况下,wasGroupCreated变量始终是对函数的引用,并且总是计算为true)。如果您正确使用它,它可能无法返回您的预期。

我认为你想要的是isNew()函数,不过我会测试这是否适用于Parse.Cloud.afterSave()方法,因为我还没有尝试过。

至于你问题的第二部分,你似乎想要像阵列一样使用你的关系。如果您使用的是数组(并且大小足够小),那么您可以在查询中包含Group个对象(例如,在{REST} include中添加isMemberOf参数集查询)。

如果您确实想坚持关系,请意识到您需要在documentation中阅读更多信息。特别是,您需要使用Group表达式查询where对象,该表达式具有$relatedTo指针。要以这种方式进行查询,您可能需要members上与Group有关系的Users属性。

你的REST查询中的这样的东西可能有用(当然用正确的用户替换objectId):

where={"$relatedTo":{"object":{"__type":"Pointer","className":"_User","objectId":"8TOXdXf3tz"},"key":"members"}}