我是新来的节点和承诺。我有两个文件 - server.js
和db.js
将对象从SQL查询函数传递到一个单独的函数
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;
})
}
}
你应该把'返回新希望(...)'的'getSubscriptions'功能。你不能从该回调中返回,你只能调用'resolve'。 – Bergi