Parse.com: 对数组字段的查询不适用于大量值

Parse.com: query on an array field not working with a big number of values

我使用 Parse.com Core 和 Cloud Code 来存储数据并为移动应用程序执行一些操作。我在查询数组字段时遇到问题,即使我确定它应该返回,有时也不会返回任何内容。

我在数组字段中存储了大量 phone 号码,以跟踪用户的匹配联系人。 此字段称为 phoneContacts,如下所示(仅包含数字,仅作为示例):

["+33W30VXXX0V","+33W30VXX843","+33W30VZVZVZ","+33W34W3X0Y4","+33W34W386Y0", ...]

我在 Cloud Code 中有一个函数,应该为给定的 phone 数字获取匹配的行。这是我的查询:

var phoneNumber = request.params.phoneNumber;
var queryPhone = new Parse.Query('UserData');
queryPhone.equalTo('phoneContacts', phoneNumber); // phoneNumber is passed as a string param, i.e. "+33W30VXX843"

queryPhone.include('user');

var usersToNotify = [];
return queryPhone.each(function(userData) {
  var user = userData.get('user');
  usersToNotify.push(user.get('username'));
})
.then(function() {
  return usersToNotify;
});

我用 2 或 3 个 phone 数字的数组测试了我的查询,它运行良好并且 returns 预期的行。但是后来我尝试了一个用户,该用户在 phone 联系人字段中有大约 300 phone 个号码,即使我查询了一个存在的值(在 Parse Data Browser 中出现过滤器),也没有返回任何内容。为了确保我什至取了一个存在于 2 行中的 phone 数字:一个值很少,一个值很多,并且只返回了值很少的那一行。

我已经仔细阅读了 Parse 文档,尤其是关于 queries and field limits 的内容,但它似乎对数组字段的值数量没有限制,也没有说查询可能不起作用有很多价值。

任何人都可以指出我正确的方向吗?我应该以不同的方式设计我的 Parse 类 以避免在数组字段中有这么多值吗?还是查询有问题?

您需要使用 PFRelation 或某种中间体 table。您不应该使用数组来存储 300 phone 个数字,您的查询会变得非常慢。

PF关系:

https://parse.com/docs/osx/api/Classes/PFRelation.html http://blog.parse.com/learn/engineering/new-many-to-many/