当我在控制台中写这个时,我得到了未定义但是数据在数据库中。我错过了什么?
Meteor.users.findOne({_id: this.userId},{fields: {"profile.pastEmployer.name": 1}});
答案 0 :(得分:1)
我认为您可能想要做的是:
var pastEmployerName = Meteor.user().profile.pastEmployer.name;
根据您对这些嵌套属性的存在的信心,您可能希望使用guard,如下所示:
var profile = Meteor.user().profile;
var pastEmployerName = profile && profile.pastEmployer && profile.pastEmployer.name;
有些注意事项:
使用Meteor.userId()
获取当前用户的ID,并使用Meteor.user()
获取当前用户的文档。在发布商和方法中,我们使用this.userId
。
字段投影(在原始问题中使用)为您提供包含_id
的对象和显示指定字段的最小结构。在您的情况下,您希望获得一个包含_id
和profile
的对象,而该对象又包含pastEmployer
等等。通常,字段预测在服务器上是有益的(它们节省带宽和CPU),但在客户端上使用有限,因为完整的文档已经在内存中。