0

我的 mongodb 中有两个集合或 mongoose 中有两个模式 - 用户和帐户。用户模式

{
  account: [{type: db.Schema.Types.ObjectId , ref: 'Account'}]
}

帐户架构如下所示。

{network:String,
 firstName: String,
 lastName:String,
 networkId:Number,
 accessToken: String,
 accessTokenExpiration:Number,
 userId: {type: db.Schema.Types.ObjectId, ref: 'User'}
}

所以它基本上是用户和帐户之间的一对多关系。在快递中,我有一条路线来获取用户的详细信息,比如带有参数 userId 的 /api/user(与用户的 mongodb objectId 匹配)。我想为此请求返回整个用户对象。它还应该包含子文档(即所有用户帐户)。

例如

{ "_id": "51e1b1b2993a51b0ce000005", "account": [ {
"network": "Facebook",
"networkId": xxxx,
"accessToken": "yyyyy",
"accessTokenExpiration": 11111,
"firstName": "John",
"lastName":"Doe"
} ] }

而不是

{ "_id": "51e1b1b2993a51b0ce000005", "account": [ "51e1b1b2993a51b0ce000004" ] } 

是否有一种 mongodb 或 mongoose 方式来实现这一点,而实际上不必在 User 对象中迭代帐户数组并在帐户集合中搜索。

谢谢。

4

1 回答 1

1

Mongoose 有专门为这种情况设计的种群:

Users.findById(id)
  .populate('account')
  .exec(function (err, user) {
    if (err) return next(err);
    res.json(user);
  })

或者,如果您使用的是express-mongoose插件:

res.send(Users.findById(id).populate('account'))
于 2013-07-13T22:48:21.810 回答