sql >> Databasteknik >  >> NoSQL >> MongoDB

Kan jag avgöra om en sträng är ett MongoDB ObjectID?

Jag upptäckte att mongoose ObjectId-validatorn fungerar för att validera giltiga objectIds, men jag hittade några fall där ogiltiga ID ansågs vara giltiga. (t.ex.:valfri 12 tecken lång sträng)

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

Det som har fungerat för mig är att casta en sträng till ett objectId och sedan kontrollera att den ursprungliga strängen matchar strängvärdet för objectId.

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

Detta fungerar eftersom giltiga ID inte ändras när de castas till ett ObjectId men en sträng som får en falsk giltig kommer att ändras när den castas till ett objectId.



  1. MongoDB $millisekund

  2. En översikt av Percona Backup för MongoDB

  3. Kör mongodb-skalskript via C#-drivrutinen

  4. MongoDB $dateToParts