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 だけでなく、有効な Person に対応していることも確認したいと思います。

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 に答える