【问题标题】:payload validation is not working as expected有效负载验证未按预期工作
【发布时间】:2018-04-06 21:50:00
【问题描述】:

名为 creator 的数组的有效负载验证无法正常工作 这是有效载荷验证:

   creator: {
            _id:Joi.string().required(), 
            name: Joi.string().required()
        }

创建者应该是必填字段,如果未在 http 正文中作为输入输入,则应引发错误。 这是猫鼬模式:

   var User = {
        _id: {type: Schema.ObjectId, ref: 'Admin'},
        name: {type: String, ref: 'Admin'}
    };
    var Note = new Schema({
    creator: User });

目前,如果我不通过 h​​ttp 正文中的创建者,没有它仍然可以正常工作。

【问题讨论】:

  • 你为什么要在 joi 验证方案中加入一个月光方案?你能解释一下你想做什么吗?
  • 我有不同的文件,第二部分是模型,第一部分是有效载荷验证。我现在开始工作了

标签: node.js mongoose mongoose-schema hapijs joi


【解决方案1】:

不确定它的猫鼬方面,但如果问题是“如何使用 Joi 验证数组”

creator: Joi.array().items(Joy.object({
            _id:Joi.string().required(), 
            name: Joi.string().required()
        }))

由于您将其命名为“创建者”(单数)并想要一个数组,因此听起来您可能想要接受单个对象或对象数组。你可以在最后使用.single()

creator: Joi.array().items(Joy.object({
            _id:Joi.string().required(), 
            name: Joi.string().required()
        })).single()

这将接受creator: { _id: '' , name: ''}creator: [{_id: '', name: ''}]

【讨论】:

  • 知道了。虽然我提到了.required() 而不是.single(),但也尝试了.single()。谢谢
猜你喜欢
  • 2013-01-21
  • 1970-01-01
  • 2018-01-27
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-15
相关资源
最近更新 更多