私はノードと約束を新しくしました。私は2つのファイルを持っています:server.js
とdb.js
オブジェクトをSQLクエリ関数から別の関数に渡す
server.js
インポートdb.js
モジュールです。
db.js
モジュールのSQLデータベースからデータを取得していますが、そのデータをserver.js
の関数に渡そうとしています。 データベースからデータを正常に取得しましたが、server.js
の関数に渡そうとすると、undefined
の値しか返されません。
ここ
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'機能に' '返す新しい約束(...)を置く必要があります。そのコールバックから 'return'することはできません。あなたは' resolve'を呼び出すことしかできません。 – Bergi