我正在创建一个接受帖子请求的函数。 post请求还包含转换为String的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()
}
}
};
答案 0 :(得分:1)
对问题发表评论时,Joi.object()
仍可使用JSON
字符串,Joi.array()
也适用。
生成与对象数据类型(以及解析为对象的JSON字符串)匹配的架构对象。
例如,给定模式:
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,只需将架构和示例数据粘贴到。
即可