Я делаю поиски MongoDB путем преобразования строки в BSON. Существует ли способ для меня определить, является ли строкой, которую я имею, допустимый ObjectID за монго прежде, чем сделать преобразование?
Вот coffeescript для моей текущей функции findByID. Это работает отлично, но я хотел бы к поиску другим атрибутом, если я решаю, что строка не является идентификатором.
db.collection "pages", (err, collection) ->
collection.findOne
_id: new BSON.ObjectID(id)
, (err, item) ->
if item
res.send item
else
res.send 404
Самый легкий путь, в основном переносят Ваш метод ObjectId в попытку и ловят сервис. Затем Вы используете этот сервис для обработки идентификатора Objecet, вместо того, чтобы использовать метод непосредственно:
var ObjectId = REQUIRE OR IMPORT ...
// service
function oid(str) {
try {
return ObjectId(str);
} catch(err) {
return false;
}
}
// usage
if (oid(USER_INPUT)) {
// continue
} else {
// throw error
}
можно также отправить пустые или пустые опоры для получения нового сгенерированного идентификатора.