【问题标题】:JOI - forcing required via requiredKeysJOI - 通过 requiredKeys 强制要求
【发布时间】:2019-05-13 14:36:42
【问题描述】:

我有这样的基本 userSchema:

const userSchema = Joi.object().keys({
    firstName: Joi.string(),
    lastName: Joi.string(),
    email: Joi.string().email(),
    username: username,
    password: password,
    devices: Joi.array().items(userDevicesSchema),
    billing: userBillingSchema,
    clients: Joi.array().items(userClientSchema),
    cart: Joi.array().items(userCartSchema),
    orders: Joi.array().items(userOrderScherma),
    isAdmin: Joi.boolean(),
    isActive: Joi.boolean(),
    lang: Joi.string().valid(['cs', 'de', 'en', 'es', 'fr', 'ja']),
    credit: Joi.number(),
    timeZone: Joi.string().timeZone(),
    customization: userCustomizationSchema,
    level: Joi.string().valid(['casual', 'scout', 'explorer', 'integrator']),
    microservicesAccess: Joi.array().items(Joi.string())
}).options({ abortEarly: false, stripUnknown: true });

现在我想为 Signup API 验证创建一个 userSignupSchema。我需要设置一些必填字段。我试过这个:

const userSignupSchema = userSchema
        .requiredKeys('firstName', 'lastName', 'email', 'username', 'password', 'lang', 'level', 'timeZone', 'level')
        .forbiddenKeys('devices', 'cart', 'orders', 'isAdmin', 'credit', 'microservicesAccess' );

但我收到错误:“未知键级别”。禁止键完美地工作。有人有使用 requiredKeys 的工作示例吗?我找不到任何...

【问题讨论】:

  • 你试过没有数组[]围绕键吗?
  • 是的,我试过了...我不知道我在这里做错了什么,因为它确实适用于禁止键...

标签: node.js validation joi


【解决方案1】:

我觉得很愚蠢...我将错误消息中的“级别”一词解释为一些层次结构级别问题,但它是架构属性之一的名称...我在 requiredKeys 中有多个“级别”。经过几个小时的互联网搜索后修复...

【讨论】:

    猜你喜欢
    • 2021-09-28
    • 2012-03-31
    • 2023-03-24
    • 2018-02-02
    • 2015-09-04
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多