如何验证 ObjectID

Raz*_*Raz 5 mongodb objectid joi

使用 Joi 模式验证,是否可以针对 MongoDB ObjectID 进行验证?

像这样的事情可能很棒:

_id: Joi.ObjectId().required().error(errorParser),
Run Code Online (Sandbox Code Playgroud)

sud*_*zen 22

我发现如果我这样做

Joi.object({
  id: Joi.string().hex().length(24)
})
Run Code Online (Sandbox Code Playgroud)

它无需安装任何外部库或使用 RegEx 即可工作

确保hex字符串仅包含十六进制字符并length确保它是恰好包含 24 个字符的字符串


小智 7

const Joi = require('@hapi/joi')
Joi.objectId = require('joi-objectid')(Joi)
 
const schema = Joi.object({
  id: Joi.objectId(),
  name: Joi.string().max(100),
  date: Joi.date()
})
Run Code Online (Sandbox Code Playgroud)

结帐https://www.npmjs.com/package/joi-objectid

  • 这适用于“Joi”(“裸体”版本)吗?因为“@hapi/joi”已被弃用。 (2认同)