MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy mogę określić, czy ciąg jest identyfikatorem obiektu MongoDB?

Odkryłem, że walidator mongoose ObjectId działa w celu walidacji prawidłowych identyfikatorów obiektów, ale znalazłem kilka przypadków, w których nieprawidłowe identyfikatory zostały uznane za prawidłowe. (np. dowolny ciąg 12 znaków)

var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true

To, co w moim przypadku działa, to rzutowanie łańcucha na obiekt objectId, a następnie sprawdzenie, czy oryginalny łańcuch pasuje do wartości łańcucha w objectId.

new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2

Działa to, ponieważ prawidłowe identyfikatory nie zmieniają się po rzuceniu na identyfikator obiektu, ale ciąg, który otrzyma fałszywą poprawność, zmieni się po rzuceniu na identyfikator obiektu.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak usunąć wszystkie dokumenty z kolekcji za pomocą Mongoose?

  2. Jak ustawić useMongoClient (Mongoose 4.11.0)?

  3. MongoDB $lub operator potoku agregacji

  4. MongoDB $toBool

  5. MongoDB $toLong