Узел MongoDB проверяет, действительно ли objectid

Как проверить, действителен ли ObjectID с помощью драйвера Node

Я пытался :

var BSON = mongo.BSONPure; console.log("Validity: " + BSON.ObjectID.isValid('ddsd')) 

Но я получаю исключение вместо истинного или ложного. (Исключение составляет только «throw e; // process.nextTick error или событие« error »при первом тике ‘

Не знаю, откуда исходит функция isValid() но не в native-mongodb-native .

Вы можете использовать это регулярное выражение, если хотите проверить строку из 24 шестнадцатеричных символов.

 var checkForHexRegExp = new RegExp("^[0-9a-fA-F]{24}$"); 

Взято из github.com/mongodb/js-bson/…/objectid.js

isValid() находится в библиотеке js-bson , которая является зависимой от node-mongodb-native .

Для тех, кто находит этот вопрос, я не рекомендую воссоздать этот метод в качестве рекомендации в других ответах. Вместо этого продолжите использование node-mongodb-native, как и исходный плакат, следующий пример будет обращаться к методу isValid() в js-bson.

 var mongodb = require("mongodb"), objectid = mongodb.BSONPure.ObjectID; console.log(objectid.isValid('53fbf4615c3b9f41c381b6a3')); 

Обновление за июль 2018 года: Текущий способ сделать это:

 var mongodb = require("mongodb") console.log(mongodb.ObjectID.isValid(id)) 

Как расширение Eat на Joes отвечает … Это справедливо в node-mongodb-native 2.0

 var objectID = require('mongodb').ObjectID objectID.isValid('54edb381a13ec9142b9bb3537') - false objectID.isValid('54edb381a13ec9142b9bb353') - true objectID.isValid('54edb381a13ec9142b9bb35') - false 

@ Отрывок из GianPaJ замечательный, но его нужно немного расширить, чтобы охватить не-hex objectID. Строка 32 того же файла указывает, что идентификатор объекта также может составлять 12 символов. Эти ключи преобразуются в шестнадцатеричный идентификатор объекта 24 символа mongodb.

 function isValidObjectID(str) { // coerce to string so the function can be generically used to test both strings and native objectIds created by the driver str = str + ''; var len = str.length, valid = false; if (len == 12 || len == 24) { valid = /^[0-9a-fA-F]+$/.test(str); } return valid; } 

Я отправил запрос на загрузку в библиотеку js-bson, которая предоставляет метод isValid, поскольку логика проверки строки objectid уже была там.

Вы можете использовать Cerberus и создать пользовательскую функцию для проверки и ObjectId

 from cerberus import Validator import re class CustomValidator(Validator): def _validate_type_objectid(self, field, value): """ Validation for `objectid` schema attribute. :param field: field name. :param value: field value. """ if not re.match('[a-f0-9]{24}', str(value)): self._error(field, ERROR_BAD_TYPE % 'ObjectId') ## Initiate the class and validate the information v = CustomValidator() schema = { 'value': {'type': 'objectid'} } document = { 'value': ObjectId('5565d8adba02d54a4a78be95') } if not v(document, schema): print 'Error' 
  • SyntaxError: использование const в строгом режиме?
  • Как сделать node.js абсолютным? (вместо относительного)
  • Mongoose Уникальные значения во вложенном массиве объектов
  • Как установить NODE_ENV для производства / разработки в OS X
  • выполнение действия очистки непосредственно перед выходом node.js
  • Как изменить время ожидания тайм-аута запроса nodejs?
  • Заseleniumие Mongoose vs вложенность объекта
  • Как разместить приложение Node.Js в режиме совместного доступа
  • MySQL с Node.js
  • Не удалось правильно загрузить файл intaller_nodejs_windows.msi: ошибка CRC
  • Как можно решить npm UNEPT PEER DEPENDENCY?
  • Давайте будем гением компьютера.