在MongoDB中创建新元素时显示对象而不是db-ref ObjectId

时间:2012-11-30 23:43:13

标签: mongodb mongoose

DB ref在以下情况下正在工作:

Element.
      findOne({unit: unit_id,).
      populate('unit').
      exec(function(err, element) {
        console.log(element)
      }

会显示

{
  "unit": {
    "id": "10251179680282633",
    "__v": 0,
  },
  "_id": "50b92eec29921b2531000003",
  "__v": 0,
  "created_at": "2012-11-30T22:10:52.513Z"
}

但是,如果我创建一个新单位并将我的单位放入我的元素并保存,

unit = new Unit();
element = new Element()
element.unit = unit;

当我这样做时:

console.log(element)

它返回:

{
  "unit": "50b9377d29921b2531000004",
  "_id": "50b9377d29921b2531000005",
  "created_at": "2012-11-30T22:47:25.361Z"
}

这不是我所期望的,因为我希望将单位视为对象而不是ID。

任何提示?

1 个答案:

答案 0 :(得分:1)

这是预期的

console.log(element)示例中,element包含对ObjectID的引用 根据{{​​1}}文档中存储的ID,Mongoose populate能够从其自己的集合中获取unit

此页面更详细地解释了这一点 http://mongoosejs.com/docs/populate.html