gpt4 book ai didi

node.js - 如何在nodejs中将模型返回结果到 Controller

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

我第一次使用node js。我的nodejs项目是MVC风格,我正在做Ajax登录请求。但是我没有从模型中获取数据...这是代码......

Controller /Auth.js

  var data = req.body;
Auth_model.login(data, function(err,result){
if(!result){
response = {
error:true,
message : "Username or Password is wrong."
};
res.send(JSON.stringify(response));
}else{
response = {
error:false,
message : "Logged in Successfully."
};
// console.log(result);
res.send(JSON.stringify(response));
}
});
});

模型/Auth_model.js

module.exports.login = function(data, callback){
var email = data.email;
var password = data.password;
var sql = 'SELECT * FROM `users` WHERE email='+mysql.escape(email);
db.query(sql, callback,function (err, result, fields) {
if (result) {
bcrypt.compare(password,result[0].password, function(err, result) {
if(result){
return result;
}else{
return err;
}
});
}
});
}

最佳答案

Controller /Auth.js

  var data = req.body;

// here you are passing your callback function as second argument
// So, you can use it in your login model when you get your response

Auth_model.login(data, function(err,result){
.........
}

模型/Auth_model.js

module.exports.login = function(data, callback){
.......
if(result){
// use your callback function pass error : null and result:result
callback(null,result);
}else{
callback(err,null)
}
......
}

您也可以使用 Promise 来代替回调函数,例如

module.exports.login = (data) =  new Promise(function(resolve, reject) {
.......
if(result){
// use your callback function pass error : null and result:result
resolve(result);
}else{
reject(err);
}
......
});

// use it like :

login(data).then(result=>console.log(result)).catch(err=>console.log(err))

了解更多有关回调函数和 Promise 的信息。

关于node.js - 如何在nodejs中将模型返回结果到 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59834624/

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