【发布时间】:2026-02-05 11:45:01
【问题描述】:
出于安全原因,我想向我的客户发布在线用户列表,并排除除“用户名”之外的所有属性。我有以下服务器端发布:
Meteor.publish 'onlineUsers', ->
users = Meteor.users.find
"services.resume.loginTokens.0":
$exists: true
它工作得很好,产生以下输出:
console.log users.fetch()
>> [{
id: 'kFney2anhwZC4w4zX',
createdAt: Fri Jan 31 2014 20:04:40 GMT+0400 (MSK),
<...>
},
{ _id: 'tLNbhoqCex46v5L7s',
createdAt: Fri Jan 31 2014 20:05:04 GMT+0400 (MSK),
...
}]
但是当我添加“字段”选项来发布参数时,结果是一个空列表:
Meteor.publish 'onlineUsers', ->
users = Meteor.users.find
"services.resume.loginTokens.0":
$exists: true
fields:
username: true
console.log users.fetch()
>> []
所以问题是:
- “find”方法是否只查询包含在结果游标中的字段?
- 如果是这样,为每个用户发布字段子集的最佳做法是什么?
更新:
正如 Andrew Mao 所注意到的,我在使用 CoffeeScript 语法时犯了一个错误。如果没有前面的逗号,我的 fields 选项是第一个参数对象的一部分。正确的方法调用应该如下:
Meteor.users.find
"services.resume.loginTokens.0":
$exists: true
,
fields:
username: true
【问题讨论】:
标签: coffeescript meteor