如何在Mongoose中保存对其他文档的引用?

时间:2015-06-07 07:22:06

标签: node.js mongodb express mongoose

我想将文档保存到数据库,该数据库包含对另一个文档的引用。

但是,当我发布文档时,Mongoose会用其他内容替换我发送的_id

这是我的Mongoose代码(在Express中)

var resultItem = new models.Round_Results({
        selection: result.selection,
        time: result.time,
        round: mongoose.Types.ObjectId(result.round)
    });
    models.User.findOne({username: username}, function(err, user){
        user.results.push(resultItem);
        user.save(function(err, result){
            ...
        });
    });

这是架构:

schemas.round_results = new mongoose.Schema({
    round: {type: mongoose.Schema.ObjectId, ref: 'Round'},
    selection: Number,
    time: Number
});
var Round_Results = mongoose.model("Round_Results", schemas.round_results);

这是我发送给服务器的代码,例如:

var results = {
    round: 555ec731385b4d604356d8e5,
    selection: 10,
    time: 19
};

但是在数据库中,它显示的是不同的round ID。例如,它就像

{ selection: 10,
  time: 19,
  round: 5573ef74536a1e58489e59c4,
  _id: 5573ef74536a1e58489e59c5 }

为什么会这样?

使用Mongoose构建Web应用程序时,保存对其他文档的引用的适当方法是什么?

1 个答案:

答案 0 :(得分:0)

mongoose为子文档添加了一个_id字段。

取消它,为您的架构添加id false:

schemas.round_results = new mongoose.Schema({
    _id:false,
    round: {type: mongoose.Schema.ObjectId, ref: 'Round'},
    selection: Number,
    time: Number
});
var Round_Results = mongoose.model("Round_Results", schemas.round_results);