验证 MongoDB ObjectId

Raj*_*ary 9 mongoose mongodb

有没有办法验证 MongoDB ObjectId而不实际访问 MongoDB 数据库?例如,字符串值"5c0a7922c9d89830f4911426"应该导致"true".

mic*_*ckl 20

您可以在 ObjectId 上使用.isValid()方法,在猫鼬中尝试:

var mongoose = require('mongoose');
var isValid = mongoose.Types.ObjectId.isValid('5c0a7922c9d89830f4911426'); //true
Run Code Online (Sandbox Code Playgroud)

  • 任何 12 个字符的字符串都可以通过此 (2认同)

Akr*_*ion 6

请注意,在几乎所有情况下,您只需要处理catch并且不必担心 mongoose 的有效性,ObjectID因为throw如果ObjectId提供invalid会抱怨。

Model.findOne({ _id: 'abcd' }).exec().catch(error => console.error('error', error));
Run Code Online (Sandbox Code Playgroud)

除此之外,您可以使用mongoose.Types.ObjectId.isValid或正则表达式:/^[a-fA-F0-9]{24}$/