Express Frameworkを使用して、postgresql でnode.jsアプリケーションに取り組んでいます。私は可能な限りMVCに従うようにしています。
モデル クラスでクエリ結果を生成し、それらをコントローラー クラスに渡したいと考えています。そのコントローラ クラスは実際にはルートで定義されているため、コントローラ クラスは結果を取得して http 応答として渡すことができます。
これは私のデータベース ヘルパー クラス、つまりモデル クラスです。私の問題は、クラスの最後にあるリスナーにあります。
exports.DatabaseHelper = function()
{
var allVenues;
var client;
var customEventEmitter;
this.init = function()
{
this.customEventEmitter = new events.EventEmitter();
client = new pg.Client(
{
host:'localhost',
port:5432,
database:'postgres',
user:'postgres',
password:'password'
});
}
this.getVenuesWithEvents = function(searchParams)
{
allVenues = new Array();
var query_for_venues;
this.init();
client.connect();
client.addListener("error",function()
{
sys.puts("postgresql interface error");
});
query_for_venues = client.query("select id, name, location, latitude, longitude, category_generalized from venues");
query_for_venues.addListener("row",function(row)
{
//some code
});
query_for_venues.addListener("end",function(result)
{
this.customEventEmitter.emit("data",allVenues);
//////////////////////////////////////////////////////////
//this line shows error....'this' refers to the query object so customEventEmitter is undefined
//customEventEmitter is my idea of sharing the query results to my controller class.
//but I cannot do this becasue of this error
console.log("after emission");
});
}
}
リスナー内から customEventEmitter インスタンス変数にアクセスするにはどうすればよいですか?