没有Schema.ObjectId的mongoose中的DB-ref?

时间:2012-07-01 09:13:11

标签: node.js mongodb mongoose

在我的代码中,人们可以关注其他人。 到目前为止,除了这个事实之外,一切都还可以:在userScheme中我有这个字段。

, following: [{ type: Schema.ObjectId, ref: 'Users' }]

由于每个用户都有一个用户名,因此对我来说,使用dbref和用户名会更加通用。 有没有办法做这样的事情?

, following: [{ type: Users.username, ref: 'Users' }]

非常感谢, 克

2 个答案:

答案 0 :(得分:3)

不,只有引用其他集合的ObjectId属性的_id值才能用作refs。

source code确认。

答案 1 :(得分:3)

您只能通过ObjectId引用类似第一个代码段的集合。

[{ type: Schema.ObjectId, ref: 'Users' }]

使用populate()进行查询时,您可以指定要返回的字段。在你的情况下,它看起来像

User.find({}).populate('following', 'username').exec(function(err,doc) {});

以下数组中的每个对象看起来都像

{ _id: 'xxxxxxxxxx', username: 'xxxxxxxx' }