sql >> Databáze >  >> NoSQL >> MongoDB

Mohu určit, zda je řetězec MongoDB ObjectID?

Zjistil jsem, že mongoose ObjectId validator funguje na ověření platných objectId, ale našel jsem několik případů, kdy byla neplatná ID považována za platná. (např.:libovolný řetězec o délce 12 znaků)

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

Osvědčilo se mi přetypovat řetězec na objectId a poté zkontrolovat, zda původní řetězec odpovídá hodnotě řetězce objectId.

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

Funguje to proto, že platná id se při přetypování na ObjectId nezmění, ale řetězec, který získá false valid, se změní, když se přetypuje na objectId.



  1. Transakce Redis

  2. Redis aktivní-aktivní replikace

  3. Spring Redis - Čtení konfigurace ze souboru application.properties

  4. Jak vložit více položek najednou do kolekce MongoDB