首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Joi验证时剥离未知密钥

使用Joi验证时剥离未知密钥
EN

Stack Overflow用户
提问于 2015-07-28 14:32:34
回答 4查看 13.8K关注 0票数 14

我使用Joi来验证服务器中的JavaScript对象。该模式如下所示:

代码语言:javascript
复制
var schema = Joi.object().keys({
    displayName: Joi.string().required(),
    email: Joi.string().email(),
    enabled: Joi.boolean().default(false, "Default as disabled")
}).unknown(false);

上面的模式将报告一个错误,如果对象中有一个未知的键(这是预期的),但是我想要的是悄悄地删除所有未知的内容,而没有错误。有可能做到吗?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2015-07-28 15:46:40

如果要从正在验证的对象中删除未知密钥,则需要使用stripUnknown选项。

https://github.com/hapijs/joi/blob/master/API.md#validatevalue-schema-options-callback上的cf选项

票数 14
EN

Stack Overflow用户

发布于 2020-12-29 09:28:26

与14.3.4版本一样,这个问题有一个简单的解决方案。下面是为您解决问题的代码。

代码语言:javascript
复制
// Sample data for testing.
const user = {
    fullname: "jayant malik",
    email: "demo@mail.com",
    password: "password111",
    username: "hello",
    name: "Hello"
};

// You define your schema here
const user_schema = joi
  .object({
    fullname: joi.string().min(4).max(30).trim(),
    email: joi.string().email().required().min(10).max(50).trim(),
    password: joi.string().min(6).max(20),
    username: joi.string().min(5).max(20).alphanum().trim()
  })
  .options({ stripUnknown: true });

// You validate the object here.
const result = user_schema.validate(user);

// Here is your final result with unknown keys trimmed from object.
console.log("Object with trimmed keys: ", result.value);
票数 8
EN

Stack Overflow用户

发布于 2017-10-02 20:49:23

代码语言:javascript
复制
const joi = require('joi');

joi.validate(object, schema, {stripUnknown:true}, callback);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31679374

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档