我需要弄清楚基于所选语言过滤用户的最有效方法是什么:
我有一个用户类和一个语言类。
用户“属于”一种语言,即用户表具有指向语言对象的指针。
示例:
用户类
objectID // 名称 // 语言
dxrObFI6Zn // Joe Smith // pZ8Urxwi8z
...
语言表
objectID // iso2 // 名称
pZ8Urxwi8z ZH英语
hj3dGlGmNw ES西班牙语
hj3dGlGmNw IN Indonesian
如何查询仅使用用户选择的语言的用户? (例如:如果用户选择英语和西班牙语,则仅显示说英语的用户和说西班牙语的用户)
非常感谢您的时间并期待您的回复!
https://dl.dropboxusercontent.com/u/21873950/Screen%20Shot%202015-08-06%20at%203.27.03%20PM.png
https://dl.dropboxusercontent.com/u/21873950/Screen%20Shot%202015-08-06%20at%203.26.36%20PM.png
答案 0 :(得分:1)
根据Parse文档,您应该执行relational query
var User = Parse.Object.extend("User");
var Language = Parse.Object.extend("Language");
var innerQuery = new Parse.Query(Language);
innerQuery.equalTo("iso2", "EN");
var query = new Parse.Query(User);
query.matchesQuery("language", innerQuery);
query.find({
success: function(users) {
...
// You have the users with the language object EN.
}
});
对于说英语和西班牙语的用户,您可以执行query on an array value
var Language = Parse.Object.extend("Language");
var queryEN = new Parse.Query(Language);
queryEN.equalTo("iso2", "EN");
var queryES = new Parse.Query(Language);
queryES.equalTo("iso2", "ES");
var languageQuery = Parse.Query.or(queryEN, queryES);
languageQuery.find({
success: function(results) {
var User = Parse.Object.extend("User");
var query = new Parse.Query(User);
query.containsAll("language", results);
query.find({
success: function(users) {
...
// You have the users with the language object EN and ES.
}
});
},
error: function(error) {
// There was an error.
}
});
当然,您可以在执行任何请求之前获取并存储所有语言(languageQuery),以避免每次使用用户语言执行请求时都将其取出。