我有一个Questions集合,我在文件“collections.js”中使用 SimpleSchema 定义了该集合,该集合位于问题 > lib 中。
这个集合有一个askedBy字段。它是一个字符串数组,用于存储提问者的用户 ID。
askedBy: {
type: [String],
optional: true
},
在另一个文件中,问题 > 服务器 > publish.js,我有:
Meteor.publish("questions", function () {
questionList = Questions.find(
{},
{
fields: {
"_id": 1,
"questiontext": 1,
"createdAt": 1,
"askedBy": 1,
"slug": 1
}
}
);
return questionList;
});
我的目标是使提出问题的用户的名称可用,即与“askedBy”数组中的 Id 对应的用户的用户名。
我该怎么做呢?
到目前为止我尝试过的事情:
在 collections.js 中:
Questions.helpers({
askedByUsers: function() {
console.log("askedBy:");
console.log(Meteor.users.findOne(this.askedBy[0]));
return Meteor.users.findOne(this.askedBy[0]);
},
这失败了,因为Meteor.users似乎只能访问当前登录的用户详细信息。对于其他用户提出的所有问题,它返回一个空值。
然后我尝试将其添加到 publish.js:
Meteor.publish("allUsers", function () {
return Meteor.users.find({},
{
"name": 1,
});
});
以及Meteor.subscribe("allUsers");collections.js 和 questions.js(其中包含我所有的模板帮助程序和事件处理程序)。我还将收集助手更改为:
Questions.helpers({
askedByUsers: function() {
console.log("askedBy:");
console.log(allUsers.findOne(this.askedBy[0]));
return allUsers.findOne(this.askedBy[0]);
},
但即使这样也行不通。
我做错了什么,如何获取未登录用户的用户名?
编辑:以防万一这很重要-文件夹结构
├── client
├── modules
│ ├── admin
└── questions
├── client
│ ├── questions.html
│ └── questions.js
├── lib
│ ├── collections.js
│ └── methods.js
└── server
└── publish.js
...