嗨,我是节点js的新手,我正在使用节点版本7.10来制作apis
我的控制器
class SomeControllerClass {
async someFunction(req, req){
var afterDBAction = await DbHelper.SomeOtherFunction(req.body)
// afterDBAction is comming out undefined
}
}
我正在分离DbHelper以使Controller变得简洁和干净,并且所有业务逻辑都将在DbHelper中编写。
User是db中的架构及其保存数据,但我不知道为什么我的控制器中出现了undefined
class DbHelper {
SomeOtherFunction(userinfo){
var user = new User(userinfo);
bcrypt.hash(userinfo.password, saltRounds).then(function(hash, err) {
user.password = hash;
return user.save().then(function() {
if (err)
return err;
return user;
})
});
}
}
答案 0 :(得分:2)
您忘记从函数中返回值。 Question == PFObject(className: "Question")
期待一个承诺。
PFCloud.callFunctionInBackground("fetchQuestions", withParameters: parameters) { questions, error in
if let questions = questions as? [Question] {
completion?(questions, nil)
} else {
completion?(nil, error)
}
}
由于承诺因某些原因失败,您需要在await
函数中使用SomeOtherFunction(userinfo) {
return bcrypt.hash(userinfo.password, saltRounds).then(function(hash, err) {
var user = new User(userinfo);
user.password = hash;
return user.save();
});
}
/ try
。
答案 1 :(得分:2)
您还可以编写异步函数以使代码更加干净
class DbHelper {
async SomeOtherFunction(userinfo) {
let hash = await bcrypt.hash(userinfo.password, saltRounds);
let user = new User(userinfo);
user.password = hash;
return user.save();
}
}