相对较新的与承诺的工作。现在,我运行以下命令来查询数据库中的一些数据。我明白这个函数是异步的,因此在查询结束之后的某个时候,“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并查看其中的内容。 –