我有名为_User&Photo&PhotoJourney的课程。我想根据某些动作向随机用户发送照片。在PhotoJourney类中,我有一个字段photo
(Pointer to Photo类)和photoSentTo
(指向_User类的指针)。
我的要求是让所有用户排除那些已发送照片的用户。
var PhotoObj = Parse.Object.extend("Photo");
var photo = new PhotoObj();
photo.id = request.params.photoId;
var Query1 = new Parse.Query("User");
var Query2 = new Parse.Query("PhotoJourney");
Query2.select("photoSentTo");
Query2.equalTo("photoID", photo);
Query1.doesNotMatchKeyInQuery("objectId", "photoSentTo", Query2);
Query1.find({
success: function(results)
{
},
error : function()
{
}
});
如果我执行Query2.find()
,它会给我正确的结果。即我要从_User表中排除的用户列表,但我不知道如何执行此操作以及将哪些参数传递给doesNotMatchKeyInQuery("","","")
。
我对云代码开发很陌生。如果我做错了,请纠正我。
提前致谢。
对不起,我其实不认为你只能用查询来解决这个问题。我想你需要这样做:
photoSentTo
对象(excludeUsers)中的PhotoJourney
对象来创建用户对象列表结果列表是可用于获取随机用户的列表。
如果你有很多用户,这是一个非常繁重的操作。您应该创建一个云代码函数,在服务器上执行此任务,并仅返回随机用户对象。
或者,您可以在Photo对象上创建一个新字段(或为其创建一个连接表),其中包含指向已收到Photo的所有用户的指针数组。然后,在查询用户时,您可以排除此列表中存在的用户。或者数组只能包含objectID,您可以在用户查询中将其用作约束:
userQuery.notContainedIn("objectId", photo.get("sentToUsers")); // Array of objectIds of receivers