【发布时间】:2017-12-03 11:19:23
【问题描述】:
我是节点和承诺的新手。我有两个文件 - server.js 和 db.js
server.js 将 db.js 导入为模块。
我正在从 db.js 模块中的 SQL 数据库中获取一些数据,并尝试将这些数据传递给 server.js 中的函数。
我已经成功从数据库中获取数据,但是当我尝试将其传递给server.js 中的函数时,它只返回一个undefined 值。
这是代码
server.js
const db = require('./db.js');
app.post('/api/trigger-push-msg/', function (req, res) {
return getSubscriptionsFromDatabase()
.then(function(subscriptions) {
// Do something
});
});
function getSubscriptionsFromDatabase() {
return new Promise((resolve, reject) => {
let subscriptions = db.getSubscriptions();
console.log(subscriptions); // this only prints "undefined"
if (subscriptions != undefined) {
resolve(subscriptions);
} else {
reject("No"); // this executes
}
})
}
db.js
module.exports = {
getSubscriptions: function() {
var sql = "SELECT * FROM subscriptions";
con.query(sql, function(err, result) {
if (err) throw err;
console.log(result); // this prints the same result as I want
return result;
})
}
}
【问题讨论】:
-
您应该将
return new Promise(…)放入getSubscriptions函数中。你不能从那个回调中return,你只能调用resolve。
标签: javascript node.js function promise nested-function