如何使用 express-validation 和 joi 验证 Express Nodejs 字符串中的 body 参数是否可以转换为 JSON
How to validate if body parameter in Express Nodejs string can be converted to JSON using express-validation and joi
我正在创建一个接受 post 请求的函数。 post 请求还包含一个转换为字符串的 JSON 对象。在后端,我需要验证这个字符串是否确实可以解析为 JSON 然后才继续。有路由功能:
var express = require('express');
var validate = require('express-validator');
var hotelController = require('../controllers/hotel-controller');
var hotelValidation = require('../validations/hotel-validation');
var router = express.Router();
router.route('/create')
.post(validate(hotelValidation.createHotel),
hotelController.create);
这里是验证对象:
var Joi = require('joi');
module.exports = {
createHotel: {
body: {
//NEED TO CHECK IF THE BELOW FIELD
//CAN BE CONVERTED TO JSON FROM STRING
data: Joi.string().required()
}
}
};
正如对问题的评论,Joi.object()
仍然可以使用 JSON
字符串,Joi.array()
也可以。
Generates a schema object that matches an object data type (as well as JSON strings that parsed into objects).
例如,给定架构:
Joi.object().keys({
body: Joi.object().keys({
data: Joi.object(),
array: Joi.array()
})
})
有效负载可以是:
{
body: {
data: '{"json": true, "foo": "bar"}',
array: '[1, 2, 3, "hello", 4, "world"]'
}
}
可以演示上面的示例here,只需将架构和示例数据粘贴到其中即可。
我正在创建一个接受 post 请求的函数。 post 请求还包含一个转换为字符串的 JSON 对象。在后端,我需要验证这个字符串是否确实可以解析为 JSON 然后才继续。有路由功能:
var express = require('express');
var validate = require('express-validator');
var hotelController = require('../controllers/hotel-controller');
var hotelValidation = require('../validations/hotel-validation');
var router = express.Router();
router.route('/create')
.post(validate(hotelValidation.createHotel),
hotelController.create);
这里是验证对象:
var Joi = require('joi');
module.exports = {
createHotel: {
body: {
//NEED TO CHECK IF THE BELOW FIELD
//CAN BE CONVERTED TO JSON FROM STRING
data: Joi.string().required()
}
}
};
正如对问题的评论,Joi.object()
仍然可以使用 JSON
字符串,Joi.array()
也可以。
Generates a schema object that matches an object data type (as well as JSON strings that parsed into objects).
例如,给定架构:
Joi.object().keys({
body: Joi.object().keys({
data: Joi.object(),
array: Joi.array()
})
})
有效负载可以是:
{
body: {
data: '{"json": true, "foo": "bar"}',
array: '[1, 2, 3, "hello", 4, "world"]'
}
}
可以演示上面的示例here,只需将架构和示例数据粘贴到其中即可。