Узел 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' 
  • Как получить доступ к существующей коллекции с помощью Mongoose?
  • nodejs connect не может найти статический
  • Надежность транспорта Websocket (потеря данных Socket.io при повторном подключении)
  • Запросить модуль, как правильно получить ударные символы?
  • Как узнать, зарегистрирован ли пользователь в файле passport.js?
  • Как настроить несколько поддоменов в Express.js или Connect.js
  • socket.io и сеанс?
  • команда bower не найдена
  • Игнорировать недопустимый самоподписанный сертификат ssl в node.js с https.request?
  • Nodejs - перенаправить URL-адрес
  • Как вы превращаете документ Mongoose в простой объект?
  • Interesting Posts

    Установка Xubuntu на Flash Drive

    Внешний жесткий диск всегда используется при попытке безопасного удаления

    Есть ли способ выполнить установку osx с флеш-накопителя?

    Состав функции Haskell (.) И функциональное приложение ($) идиомы: правильное использование

    Где хранить скрипты bash, которые все пользователи могут выполнять на Debian?

    В Firefox я случайно нажал «Начать новую сессию» после сбоя. Как я могу вернуть все свои вкладки?

    ObservableCollection Не поддерживает метод AddRange, поэтому я получаю уведомление для каждого добавленного элемента, кроме того, что касается INotifyCollectionChanging?

    Запуск / остановка службы Windows из учетной записи пользователя, отличного от администратора

    Закройте один JFrame, не закрывая другого?

    Почему генераторы C # не могут быть получены из одного из параметров типового типа, как они могут, в шаблонах C ++?

    Как сделать все границы таблиц невидимыми в MS Word после копирования из HTML

    Что происходит «внутренне» на нестабильном / разогнанном / недооцененном процессоре?

    Умножение значений в Excel 2010 (одна и та же ячейка)

    Введите, чтобы открыть файл в Finder

    Как проверить пустой массив в макросе vba

    Давайте будем гением компьютера.