这里的例子
http://mongoosejs.com/docs/populate.html
提供以下代码
var story1 = new Story({
title: "A man who cooked Nintendo"
, _creator: aaron._id
});
_creator的定义如下
_creator : { type: Schema.ObjectId, ref: 'Person' }
如果我将代码修改为以下
var story1 = new Story({
title: "A man who cooked Nintendo"
, _creator: {name: 'test'}
});
似乎很乐意将数据插入MongoDB。
{ "title" : "A man who cooked Nintendo", "_creator" : { "name" : "test" }, "_id" : ObjectId("4fb7a55315c5f2de07000002"), "fans" : [ ] }
如何在插入前捕获错误?我想检查它不仅是一个ObjectId,而且它对应一个有效的Person。
答案 0 :(得分:20)
继续@JohnnyHK提出的建议,这是一个完整的解决方案(假设_creator是对数字id的引用)。
如果要检查值是否为有效的ObjectId
function isObjectId(n) {
return mongoose.Types.ObjectId.isValid(n);
}
验证:[验证器,'我的错误类型']
_creator : { type: Schema.ObjectId, ref: 'Person', validate: isObjectId }
答案 1 :(得分:6)
方法isValid不存在(不再?),你最好的选择是一个简单的正则表达式,如提供here
答案 2 :(得分:1)
您可以按照here所述的方式向模式的_creator字段添加验证。
_creator : { type: Schema.ObjectId, ref: 'Person', validate: ... }