【问题标题】:How to validate whether a username is unique using joi?如何使用 joi 验证用户名是否唯一?
【发布时间】:2018-04-13 17:52:04
【问题描述】:

我在某处读过一篇文章,其中作者使用Joi 通过检查数据库来异步验证用户名是否唯一。我现在找不到它,我想知道如何使用 Joi 做到这一点。

【问题讨论】:

  • 我很想看看你到目前为止所做的尝试。我认为这并不是 Joi 作为模式验证器的真正用途。一旦 Joi 确认请求有效,您所描述的可能是第二级验证,您需要自己实施。
  • 我没有运气找到如何做到这一点。我猜你是对的。我应该只将 Joi 用于模式验证,并在下一级进行异步检查。我仍然无法找到那篇文章。
  • 这就是 pre 处理程序的用处。

标签: javascript node.js validation hapijs joi


【解决方案1】:

正如@Ankh 在 cmets 中已经提到的,我也认为检查数据库不是joi 的职责范围。

但是,您现在可以使用 joi@v16any().external() 进行外部异步验证。这可用于进行数据库查找。 (详情在release document v16

const lookup = async (id) => {

    const user = await db.get('user', id);
    if (!user) {
        throw new Error('Invalid user id');
    }
};

const schema = Joi.string().external(lookup);
await schema.validateAsync('1234abcd');

【讨论】:

    猜你喜欢
    • 2023-02-15
    • 2013-07-09
    • 2022-01-21
    • 2017-11-02
    • 2016-06-26
    • 1970-01-01
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多