控制台返回undefined

时间:2016-03-17 00:55:16

标签: meteor

当我在控制台中写这个时,我得到了未定义但是数据在数据库中。我错过了什么?

Meteor.users.findOne({_id: this.userId},{fields: {"profile.pastEmployer.name": 1}});

1 个答案:

答案 0 :(得分:1)

我认为您可能想要做的是:

var pastEmployerName = Meteor.user().profile.pastEmployer.name;

根据您对这些嵌套属性的存在的信心,您可能希望使用guard,如下所示:

var profile = Meteor.user().profile;
var pastEmployerName = profile && profile.pastEmployer && profile.pastEmployer.name;

有些注意事项:

  1. 使用Meteor.userId()获取当前用户的ID,并使用Meteor.user()获取当前用户的文档。在发布商和方法中,我们使用this.userId

  2. 字段投影(在原始问题中使用)为您提供包含_id的对象和显示指定字段的最小结构。在您的情况下,您希望获得一个包含_idprofile的对象,而该对象又包含pastEmployer等等。通常,字段预测在服务器上是有益的(它们节省带宽和CPU),但在客户端上使用有限,因为完整的文档已经在内存中。