如何解决mongoose异步造成的数据不同步?
最近在用mongoose写一些小demo,然后我在需要验证用户名的时候出现了一些问题,代码如下:
router.get('/', function (req, res, next) {
var userSchema = mongoose.Schema({ //数据格式
name: String,
password: String
})
var userModel = mongoose.model('userModel', userSchema) //定义数据模型,相当于类
var user = new userModel({ //指定数据
name: req.query.name,
password: req.query.password
})
var exist = false
user.find(function (err, name) { //是否已经存在相同用户名
if (err) {
return console.error(err)
}
if (req.query.name === name) {
exist = true
return
}
})
if (exist === false) { //不存在相同用户名则将用户数据存入数据库
user.save(function (err, doc) {
if (err) {
console.log(`error:${err}`)
} else {
console.log(doc)
}
})
}
})
我的想法是将注册界面的用户名发过来,在数据库中验证,如果不存在相同用户名则将新用户名存入数据库。
现在有个问题就是,mongoose
是异步的,应该如何获取在进行数据库查找后的exist
变量?望指教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
不需要
exist
这个变量。方法一:在
find
的回调函数内判断方法二: 利用promise
可以将处理逻辑放在查询函数内,即查询后根据返回值处理是否存入数据库
也可以用callback回调函数。