我在mongo数据库中有一个User集合,它有一个公司字段,它是对另一个名为Company的集合的引用。 我将公司分配给用户。当我尝试在公司字段内打印数据时,它返回我:undefined。
这是我使用的代码,
console.log('company: ' + req.user.company);
if(req.user.company)
console.log("LOGGED IN USER" + "\n Email:" + req.user.username + "\n Psw: " + req.user.password + "\n Role: " + req.user.role + "\n Company: " + req.user.company.name);
这是终端上的回复:
company: 59aab09745db5532c4321742
LOGGED IN USER
Email:user@admin.com
Psw: $2a$10$Z7h3ikaDJLhLXMotV.odaerGf5RFRXxDmlVxCFdvTaL48WalNIwRy
Role: admin
Company: undefined
如您所见,第一个终端线显示分配给该特定用户的公司ID,但是当我尝试打印该公司的名称时,它返回undefined。
这是公司集合条目,它有名称字段,对象ID与我上面打印的相同
我错在哪里? 如果您需要进一步的信息,请告诉我 谢谢
答案 0 :(得分:1)
你必须填充公司。
http://mongoosejs.com/docs/populate.html
打印时:
console.log('company: ' + req.user.company);
它显示:
company: 59aab09745db5532c4321742
因此,您的req.user.company
不是您期望的对象,而是对象的_id
的字符串。所以必须填充。
当您使用User.findOne({...})
之类的内容时,您必须像这样追加群体:
User.findOne({...}).populate("company");
对象的引用存储为包含引用文档的ObjectId的字符串。如果您希望引用不是字符串,而是它引用的对象,则必须这样做。