Saya menemukan bahwa validator ObjectId luwak berfungsi untuk memvalidasi objectIds yang valid tetapi saya menemukan beberapa kasus di mana id yang tidak valid dianggap valid. (misalnya:string sepanjang 12 karakter)
var ObjectId = require('mongoose').Types.ObjectId;
ObjectId.isValid('microsoft123'); //true
ObjectId.isValid('timtomtamted'); //true
ObjectId.isValid('551137c2f9e1fac808a5f572'); //true
Apa yang berhasil bagi saya adalah mentransmisikan string ke objectId dan kemudian memeriksa apakah string asli cocok dengan nilai string dari objectId.
new ObjectId('timtamtomted'); //616273656e6365576f726b73
new ObjectId('537eed02ed345b2e039652d2') //537eed02ed345b2e039652d2
Ini berfungsi karena id yang valid tidak berubah saat dicor ke ObjectId tetapi string yang mendapatkan valid palsu akan berubah saat dicor ke objectId.