Schema.ObjectId不工作?

时间:2017-01-17 05:27:49

标签: node.js mongodb mongoose

我不确定为什么Schema.ObjectId不能处理我的模型,我有最新版本的mongoose。

这是我的模特

var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ObjectId = Schema.ObjectId;

var TeamSchema = new mongoose.Schema({
    team_name : {
        type: String,
        index : true
    },
    dateCreated : {
        type : Date
    },
    memberId : {
        type : Schema.Types.ObjectId
    }
});

var Team = module.exports = mongoose.model('Team', TeamSchema);


module.exports.createTeam = function(newTeam, callback){

    newTeam.save(function(err){
        if (err) throw err;
    });

}

我也试过这个post仍然无效。任何人都可以帮忙吗?感谢

这是我的数据的json文件,而且它很奇怪,memberId没有显示

[
  {
    "_id": "587da4a9141f1619f42ac66d",
    "dateCreated": "2017-01-17T04:59:21.000Z",
    "team_name": "Sample Team",
    "__v": 0
  }
]

1 个答案:

答案 0 :(得分:0)

我认为您的架构没有任何问题。

Mongoose仅为ObjectId字段定义了新的_id。对于ObjectId类型的所有其他字段,您必须向其传递新的ObjectId值。

因此,如果字段memberId用于保存引用其他集合中成员的ObjectId(例如成员),则可以传递成员成员的_id值收集到memberId。 (同样在架构中添加ref对该集合会很有帮助)

如果memberId是一个全新的ObjectId且与任何其他集合无关,那么您可以使用 ObjectId 功能生成一个新的唯一mongoose.Types.ObjectId(),将它保存到memberId字段。

在保存newMember之前这样做:

newMember.memberId = mongoose.Types.ObjectId();

希望有所帮助!