我使用Joi来验证服务器中的JavaScript对象。该模式如下所示:
var schema = Joi.object().keys({
displayName: Joi.string().required(),
email: Joi.string().email(),
enabled: Joi.boolean().default(false, "Default as disabled")
}).unknown(false);上面的模式将报告一个错误,如果对象中有一个未知的键(这是预期的),但是我想要的是悄悄地删除所有未知的内容,而没有错误。有可能做到吗?
发布于 2015-07-28 15:46:40
如果要从正在验证的对象中删除未知密钥,则需要使用stripUnknown选项。
https://github.com/hapijs/joi/blob/master/API.md#validatevalue-schema-options-callback上的cf选项
发布于 2020-12-29 09:28:26
与14.3.4版本一样,这个问题有一个简单的解决方案。下面是为您解决问题的代码。
// 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);发布于 2017-10-02 20:49:23
const joi = require('joi');
joi.validate(object, schema, {stripUnknown:true}, callback);https://stackoverflow.com/questions/31679374
复制相似问题