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

How to validate whether a username is unique using joi?

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

来做到这一点

正如@Ankh 在评论中提到的,我也认为检查数据库不是 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');