約束事で作業することは比較的新しいです。今、私はデータベースからいくつかのデータを照会するために以下を実行しています。私は関数が非同期であることを理解しています。したがって、「then」内のすべてがクエリが終了したときにいつか実行され、結果がその関数に渡されます。私が理解できないことは、外部関数にスコープされた変数にアクセスする方法です。nodejs pg-promiseは関数スコープの外に変数を取得します
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をログに記録し、その内容を確認してください。 –