我想知道是否有办法从以下查询中获取匹配的值:
[query whereKey:@"interests" containedIn: @[@"reading",@"writing",@"typing"]];
现在说parse有一个圆柱形命名兴趣,其中包含一行值为:[“阅读”,“打字”]和另一个[“阅读”,“打字”,“正在运行”]和另一个[“写作”, “跑”]
有没有办法知道数组匹配的值是什么?
我将提供的containsIn数组将从用户选择的兴趣列表中动态创建。
所以知道查询匹配哪些值会很有帮助,谢谢!
答案 0 :(得分:2)
您需要扫描查询返回的结果集并自行完成。
以下是使用Cloud Code的示例,其中给出了诸如
之类的参数@{ @"interests": @[ @"reading",@"writing",@"typing" ] }
将返回表单的结果:
@[ @{ @"user": PFUser, @"matchingInterests": @[ @"reading" ] }, ... ]
Cloud Code功能:
var _ = require('underscore');
Parse.Cloud.define("searchInterests", function (request, response) {
var interests = request.params.interests;
if (!interests) {
response.error('interests is required');
return;
}
new Parse.Query(Parse.User)
.containedIn('interests', interests)
.limit(1000)
.find()
.then(function (users) {
var results = _.map(users, function (user) {
return {
user: user,
matchingInterests: _.filter(user.get('interests'), function (userInterest) {
return _.contains(interests, userInterest);
});
};
});
response.success(results);
}, function (err) {
response.error(err.message);
});
});