有没有一种方法可以验证MongoDB ObjectId ,而无需实际访问MongoDB数据库?例如,字符串值"5c0a7922c9d89830f4911426"
的结果应为"true"
。
答案 0 :(得分:3)
@mickl的答案对于长度为12的字符串将失败。
您应该使用 MongoDB
构造函数将任何给定的字符串转换为 ObjectId
ObjectId
strong> mongodb
,然后将其转换为字符串,然后再次检查原始字符串。应该是一样的。
import { ObjectId } from 'mongodb'
function isValidId(id) {
return new ObjectId(id).toString() === id;
}
isValidId('5c0a7922c9d89830f4911426')// true
isValidId('lkjyuhgfdres')// false
答案 1 :(得分:2)
您可以在ObjectId上使用.isValid()方法,尝试使用猫鼬:
var mongoose = require('mongoose');
var isValid = mongoose.Types.ObjectId.isValid('5c0a7922c9d89830f4911426'); //true
答案 2 :(得分:2)
请注意,在几乎所有情况下,您都只需要处理catch
,而不必担心ObjectID
的有效性,因为如果无效throw
的猫鼬会抱怨ObjectId
提供。
Model.findOne({ _id: 'abcd' }).exec().catch(error => console.error('error', error));
除此之外,您可以使用mongoose.Types.ObjectId.isValid或正则表达式:/^[a-fA-F0-9]{24}$/