有没有办法验证 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)
请注意,在几乎所有情况下,您只需要处理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}$/