解析 Javascript 云代码嵌套查询

Parse Javascript Cloud Code Nested Query

我正在 parse.com 的 javascript 云代码 SDK 上编写脚本。我在使用 "doesNotMatchQuery" 方法时遇到问题。 我有一个名为 activity 的 "class",它包含一个名为 movie 的字段和一个名为 fromUser 的字段,其中包含 activity、

的用户对象

我有一个 class 叫做电影。我想从这个用户那里得到所有没有 activity 的电影。

我正在使用的代码(我知道这是错误的,doesNotMatchQuery 不是正确的方法)。

  Parse.Cloud.define("recommendations", function(request, response) {
  var user = request.user;

  var queryUserActivity = new Parse.Query("Activity");
  queryUserActivity.equalTo("fromUser",user);

  var query = new Parse.Query("Movie");
  query.doesNotMatchQuery("movie", queryUserActivity);
  query.find({
    success: function(results) {
      response.success(results);
    },
    error: function() {
      response.error("movie lookup failed");
    }
  });
}

问题出在 doesNotMatchQuery,只匹配一个字段,而我希望它匹配来自 "query" 的结果对象,方法 "doesNotMatchKeyInQuery" 接近但仍然不提供将查询结果与键匹配的能力。

下面的代码通过 Activity table 找到您不想 return 的电影对象列表,并将它们从最终 Movie 记录中排除。

var _ = require('underscore');
Parse.Cloud.define("recommendations", function(request, response) {

var user = request.user;
var queryUserActivity = new Parse.Query("Activity");
queryUserActivity.equalTo("fromUser",user);
queryUserActivity.select("movie");

queryUserActivity.find().then(function(activities) {

    var movieObjIds = _.map(activities, function(activity) {
        return activity.get("movie").id; 
    });
    var query = new Parse.Query("Movie");
    query.notContainedIn("objectId", movieObjIds);
    return query.find();

}).then( function(results) {
      response.success(results);
}, function(error) {
      response.error(error);
});
});