相對較新的與承諾的工作。現在,我運行以下命令來查詢數據庫中的一些數據。我明白這個函數是異步的,因此在查詢結束之後的某個時候,「then」中的所有內容都會被執行,並將結果傳遞給該函數。我不明白的是如何訪問變量作用域的外部函數,以便我可以使用它們?的NodeJS PG-承諾得到變量之外的功能範圍
var db = require('../repositories/db.js');
var Response = require('../models/responseModel.js');
var dashboard = {};
dashboard.getCompany = function (req, res) {
var companyId = req.params.companyId.toUpperCase();
var sql = db.getSql('./sql/getCompany.sql');
db.any(sql, { tic: companyId })
.then(function (data) {
var r = new Response(true, 'retrieved company', data);
// can't do this because companyId is undefined...
// console.log(companyId);
res.status(200)
.json(r);
})
.catch(function (err) {
var r = new Response(false, err.message);
res.send(r);
});
};
一直在PG-承諾研讀以及藍鳥(這就是我初始化我的諾言庫...),但我不完全得到它:(我只需要能夠訪問變量我的查詢外,或者通過某種方式將它們傳遞到。然後()函數,或者一些其他的方式,在上面的例子中,我怎麼能訪問該公司在req.params但裏面查詢的推移,一些ID?
任何幫助將不勝感激。
companyId應該在整個getCompany功能來定義。你可能有另一個問題。 –
所以你說我「應該」實際上能夠訪問它? – dvsoukup
當然。它與承諾無關。嘗試記錄req.params並查看其中的內容。 –