验证MongoDB ObjectId

时间:2018-12-08 20:14:06

标签: mongodb mongoose

有没有一种方法可以验证MongoDB ObjectId ,而无需实际访问MongoDB数据库?例如,字符串值"5c0a7922c9d89830f4911426"的结果应为"true"

3 个答案:

答案 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}$/