如何使用 joi 验证用户名是否唯一?

sid*_*shi 7 javascript validation node.js hapijs joi

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

a13*_*300 6

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

但是,joi@v16any().external()现在可以进行外部异步验证。这可用于进行数据库查找。(详细信息参见发布文档 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');
Run Code Online (Sandbox Code Playgroud)