Joi 验证检查数据库中是否存在记录

Joi validation check if record exists in database

我正在使用 Joi 验证来验证输入数据, 假设我要创建一个服务,post 正文是:

{"name": "service A", "active": 1, "provider_id": 2}

我需要能够检查 mongodb 提供商集合中是否记录了 ID:2 存在。 Joi 数据库是否知道?或者我应该做些什么吗?

joi 只是一个 JSON 验证器工具,其中不提供数据库连接。

您可以使用直接数据库查询或 ORM 来检查记录是否存在。

对于MongoDB,mongoose可以与joigoose一起使用,可以轻松转换Joi模式。因为 joi 不是 ORM

对于 ex 唯一电子邮件验证

// rating.js
const mongoose = require('mongoose')
const joigoose = require('joigoose')(mongoose)

// Require the 'ratings' schema
const schema = require('./rating-schema')

// Convert joi to mongoose schema
const mongooseSchema = joigoose.convert(schema);

// Modify some fields with database specific instructions 
mongooseSchema.email.unique = true

// Add fields which don't make sense on the schema validator
mongooseSchema.updatedAt = { type: Date, default: Date.now }
mongooseSchema.createdAt = { type: Date, default: Date.now }

// Define mongoose model
const Ratings = mongoose.model('Ratings', mongooseSchema)

module.exports = Ratings

参考:https://codeburst.io/joi-validate-input-and-define-databases-in-javascript-84adc6f1474b 参考:https://github.com/yoitsro/joigoose