分析云代码关系查询语法

Parse Cloud Code relational query syntax

本文关键字:查询 语法 关系 代码      更新时间:2023-09-26

我在Parse上有一个云函数。当它被调用时,它检索一个PFObject,然后添加该对象和用户之间的关系。这部分工作良好(从函数末尾看)。我在获取选择PFObject的查询以忽略用户已经与相关的查询时遇到了问题

这是我的代码:

Parse.Cloud.define("NextMedia", function (request, response) {
    var LikeRequest = Parse.Object.extend("LikeRequest");
    var query = new Parse.Query(LikeRequest);
    query.equalTo("completed", false);
    console.log("user: " + Parse.User.current().id);
    query.notEqualTo("user", Parse.User.current());
    // Also only fetch if never been sent before 
    // HERE SHOULD USE THE BELOW RELATIONSHIP
    var innerQuery = new Parse.Query(Parse.User);
    innerQuery.exists(Parse.User);
    query.matchesQuery("sentTo", innerQuery);
    query.ascending("createdAt");
    query.first({
        success: function (object) {
            // Successfully retrieved the object.
            console.log("Got 1 object: " + object.get('mediaId'));
            // Record that the user has been sent it
            var user = Parse.User.current();
            var relation = object.relation("sentTo"); // RELATION ADDED HERE
            relation.add(user);
            object.save();
            response.success(object);
        },
        error: function (error) {
            console.log("Error: " + error.code + " " + error.message);
            response.error("Error getting next mediaId");
        }
    });
});

我确信我只是不理解关系查询语法是如何工作的。

此扩展:

// Also only fetch if never been sent before 
// HERE SHOULD USE THE BELOW RELATIONSHIP
var innerQuery = new Parse.Query(Parse.User);
innerQuery.exists(Parse.User);
query.matchesQuery("sentTo", innerQuery);

可以更改为:

// Also only fetch if never been sent before 
query.notContainedIn("sentTo",[Parse.User.current()])

这很管用分析查询

查询约束是什么?

如果您想检索与几个值中的任何一个都不匹配的对象,可以在中使用notContainer

  // Finds objects from anyone who is neither Jonathan, Dario, nor Shawn
query.notContainedIn("playerName",
                     ["Jonathan Walsh", "Dario Wunsch", "Shawn Simon"]);

我认为Kerem部分正确,但notContainered对于您的情况来说不够动态。

您需要根据关系构造查询,然后使用doesNotMatchKeyInQuery从外部查询中排除这些对象。