如何validationExpress Nodejsstring中的body参数是否可以使用express-validation和joi转换为JSON

我正在创build一个接受post请求的函数。 发布请求还包含一个转换为string的JSON对象。 在后端,我需要validation这个string是否确实可以parsing成JSON,然后才能继续。 有路由function:

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); 

这是validation对象:

 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()仍然可以使用JSONstring, Joi.array()也可以。

它在API中有logging

生成匹配对象数据types的模式对象(以及parsing为对象的JSONstring)。

例如,给定模式:

 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"]' } } 

上面的例子可以在这里演示,只需粘贴架构和示例数据。