解析 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);
});
});
我正在 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);
});
});