gpt4 book ai didi

node.js - 如何检查用户是否已存在于express-validator中的customValidators?

转载 作者:太空宇宙 更新时间:2023-11-04 00:32:40 25 4
gpt4 key购买 nike

如果用户已存在或不存在于自定义快速验证器中,我无法返回 bool 值(true 或 false)。到目前为止,我设法以这种方式工作:

app.use(expressValidator({
customValidators: {
isUsernameAvailable: function (username) {
return User
.findOne({ 'username': username })
.then(function (user) {
if (user) {
throw new Error('User already exist')
}
}
}
}

想法是返回boolean(对应名称:isUsernameAvailable)而不是Promise或Object,但我不知道如何。

我用它来检查它是这样的:

module.exports = {
create: (req, res) => {
let user = req.body

...
req.check('username', 'This username is already taken.').isUsernameAvailable()
...
}
}

最佳答案

您还没有描述您的“检查”功能如何知道用户名是否重复,但我会说我想不出一种不需要访问某种形式的可扩展解决方案数据存储(数据库是最常见的)。在 Node 中,这意味着涉及回调或 Promise 的异步调用,除非您确实想努力使其同步。

老实说,任何具有唯一性要求的多用户应用程序最终都会因您所描述的检查而陷入麻烦,因为您的检查和创建步骤不会位于单个原子事务中。

只需将唯一索引应用于数据库中的字段,然后在应用程序代码中适当处理该错误,效果就更好、更具可扩展性。

关于node.js - 如何检查用户是否已存在于express-validator中的customValidators?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40376557/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com