12

这里的例子

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,而且它对应于一个有效的人。

4

3 回答 3

19

要继续@JohnnyHK 的建议,这里有一个完整的解决方案(假设 _creator 是对数字 id 的引用)。

如果要检查该值是否为有效的 ObjectId

function isObjectId(n) {
  return mongoose.Types.ObjectId.isValid(n);
}

验证:[验证器,'我的错误类型']

_creator : { type: Schema.ObjectId, ref: 'Person', validate: isObjectId }
于 2012-05-19T18:20:07.450 回答
6

方法 isValid 不存在(不再存在?),您最好的选择是一个简单的正则表达式,如此处提供

于 2013-06-07T14:00:07.617 回答
1

您可以将验证添加到架构的 _creator 字段,如此处所述

_creator : { type: Schema.ObjectId, ref: 'Person', validate: ... }
于 2012-05-19T14:30:24.280 回答