在我的Meteor应用程序中,我试图接收有限数量的用户(在服务器上!)。在那些用户中,我只想收到一些指定的字段。
为什么此查询无法按预期工作?
const users = Meteor.users.find(
{
'roles.__global_roles__': {$in: ['myRole']},
$and: query
},
{fields: {
username: 1,
firstName: 1,
lastName: 1,
update: 1
}},
{
limit: 2,
sort: {'update.any': -1}
}
).fetch();
使用此查询,将忽略限制和排序。仅接收选定的字段。
然后我尝试了这个:
const users = Meteor.users.find(
{
'roles.__global_roles__': {$in: ['myRole']},
$and: query
},
{
limit: 2,
sort: {'update.any': -1}
}
).fetch();
现在限制和排序工作但显然我得到了包含所有字段的整个用户对象。
将两者结合起来的解决方案是什么?
由于
答案 0 :(得分:1)
find()有2个参数,你在第一个例子中提供了3个参数。试试这个:
const users = Meteor.users.find(
{
'roles.__global_roles__': {$in: ['myRole']},
$and: query
},
{fields: {
username: 1,
firstName: 1,
lastName: 1,
update: 1
},
limit: 2,
sort: {'update.any': -1}
}
).fetch();
iow,fields,limit和sort都是与第二个参数相同的JSON对象的一部分。