node.js - Joi验证检查数据库中是否存在记录
问题描述
我正在使用 Joi 验证来验证输入数据,考虑我要创建一个服务并且帖子正文是:
{"name": "service A", "active": 1, "provider_id": 2}
我需要能够检查 mongodb 提供程序集合中是否存在 id: 2 的记录。Joi 数据库知道吗?还是我应该做其他事情?
解决方案
对于 MongoDB,mongoose 可以与 joigoose 一起使用,它可以轻松转换 Joi 模式。因为 joi 不是 ORM
对于前唯一的电子邮件验证
// 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
推荐阅读
- javascript - Javascript - concat() 的作用类似于 push()
- c++ - 使用 C++ Stream API 发生访问冲突异常
- php - 我的 laravel 路由返回 404 错误但路由存在?
- java - 使用 spring-data-rest 返回所有结果
- swift - 在全局监视器中访问触摸事件会引发错误
- gis - QGIS:读取 GeoTIFF 文件
- html - 定位引导弹出框
- javascript - 在添加的 jQuery 函数中,我可以知道触发的 DOM 对象吗?
- xaml - 内容控件不更新文本
- mysql - 显示来自其他 2 个表的相交表的相应数据