node.js - 返回未定义值的方法
问题描述
router.post("/register",validator.validate("createUser"), function(req,res){
const register = User({
fullname:fullname,
contact:contact,
email:email,
password:bcrypt.hashSync(password, salt),
role:check_user.if_user_exists()
})
register.save()
}
下面的代码来自 check_user.js 文件
exports.if_user_exists= function(){
User.findOne({role:"Admin"},function(err,data){
if(data){
console.log("Inside User"+data)
return "User"
}else{
console.log("Inside Admin"+data)
return "Admin"
}
})
}
所以我面临的问题是,保存记录时角色值未定义,我认为问题在于它没有等待函数返回值。请帮助我如何获取方法值
解决方案
将功能更改if_user_exists
为此。
exports.if_user_exists = function () {
return new Promise((resolve, reject) => {
User.findOne({ role: "Admin" }, function (err, data) {
if (err) reject(err)
if (data) {
console.log("Inside User" + data)
return resolve("User")
} else {
console.log("Inside Admin" + data)
return resolve("Admin")
}
})
})
}
然后将保存逻辑更改为此。
router.post("/register", validator.validate("createUser"), async function (req, res) {
let role = await check_user.if_user_exists()
const register = User({
fullname: fullname,
contact: contact,
email: email,
password: bcrypt.hashSync(password, salt),
role
})
register.save()
})
推荐阅读
- php - 如何对传入的 PHP 帖子进行排队
- sparql - sparql rdfs:range 不返回任何内容
- python - 在 Django views.py 中转换缩略图后如何将缩略图保存到 default_storage(AWS S3)?
- python - 如何让 n 个进程在 Python 2.7 中长度不同的作业列表上运行?
- java - 如何在Java中一次停止点击多个按钮(使用其他一些Jbutton)
- r - 如何使用 r 按列添加 excel 工作表
- r - 如何保存自定义(仅保留下三角形)ggpairs图?
- html - 使引导程序 4 在 xs 屏幕模式下显示 flex 子 div 宽度 100%
- php - 使用php更新mysql自定义排名字段
- meta - 如何与 nextJS 一起使用