Javascript 节点承诺停止工作
由于某种原因,节点中的承诺不起作用,尽管它以前起过作用。 这是我的特快路线:Javascript 节点承诺停止工作,javascript,node.js,promise,Javascript,Node.js,Promise,由于某种原因,节点中的承诺不起作用,尽管它以前起过作用。 这是我的特快路线: app.post('/login/', function (req, res) { let email = req.body.email; let password = req.body.password; let companyId = req.body.companyId; let controller = require('./con
app.post('/login/', function (req, res) {
let email = req.body.email;
let password = req.body.password;
let companyId = req.body.companyId;
let controller = require('./controllers/agents/index');
controller.login(email, password, companyId).then((data) => {
console.log(data)
res.send(data);
});
它调用一个执行sql查询的登录函数:
login(email, password, companyId) {
let loginPromise = new Promise(function(resolve, reject) {
email = mysql.escape(email);
password = mysql.escape(password);
companyId = mysql.escape(companyId);
if(!email || !password || !companyId) {
let data = {
code: 401,
test: 'Missing Parameter'
}
resolve(data)
}
let dataReturn = {};
let query = `SELECT agents.id FROM buschat.agents WHERE email=${email} AND password = ${password} AND company_id = ${companyId}`;
DB.Q(query).then((data) => {
if(data.length) {
dataReturn = {
code: 200,
text: 'Login Success.'
}
} else {
dataReturn = {
code: 400,
text: 'Login Failed.'
}
}
console.log(dataReturn);
resolve(data);
});
resolve({})
});
return loginPromise;
}
正如您所看到的,那里有一个控制台日志,显示了该对象,但由于某些原因,解析函数没有将其发送到路由…为什么您试图调用
resolve
两次?另外,要避免这种情况!我取消了第二个决定。但它仍然没有将数据从promise发送到“then”。所以你声称你得到的是第一个控制台。log
,但不是第二个?是的,但我发现了问题。我返回“data”,它也是来自DB.Q返回对象的回调。。。