Как я могу проверить тип в MongoDB?
Пример здесь
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.
Ответы
Ответ 1
Чтобы продолжить то, что предложил @JohnnyHK, вот полное решение (предполагая, что _creator является ссылкой на числовой идентификатор).
Если вы хотите проверить, является ли значение допустимым ObjectId
function isObjectId(n) {
return mongoose.Types.ObjectId.isValid(n);
}
validate: [validator, 'my error type']
_creator : { type: Schema.ObjectId, ref: 'Person', validate: isObjectId }
Ответ 2
Метод isValid не существует (больше?), ваш лучший выбор - простое регулярное выражение, как предусмотрено здесь
Ответ 3
Вы можете добавить подтверждение в поле _creator схемы, как описано здесь.
_creator : { type: Schema.ObjectId, ref: 'Person', validate: ... }