注意していただきありがとうございます。私はコードに閉じ込められています。私は本当に優れた JavaScript 開発者ではなく、データベース クラスを作成するのが困難です。私の問題は、postgre 接続を使用してカプセル化しようとしているメソッドの範囲です。クラス:
Connector = new require('./connector.js').Connector
PGClient = new require('pg').Client
exports.Database =
class Database
constructor:(@connector)->
@connector = Connector if not @connector
@client = new PGClient( @connector.connection_string );
@client.connect()
close: ->
@client.end()
query: (sql) ->
@client.connect (err) ->
@client.query 'SELECT NOW() AS "theTime"', (err, result) ->
return result.rows[0].theTime
#output: Tue Jan 15 2013 19:12:47 GMT-600 (CST)
クエリメソッド内で接続を作成し、接続コールバック内で @client オブジェクトを使用してクエリを使用したいのですが、return ステートメントの前に close メソッドを呼び出したいのですが、このようにコールバック内では持っていませんオブジェクトスコープへのアクセス。
それを行う方法はありますか?
JavaScript のコード
(function() {
var Connector, Database, PGClient;
Connector = new require('./connector.js').Connector;
PGClient = new require('pg').Client;
exports.Database = Database = (function() {
function Database(connector) {
this.connector = connector;
if (!this.connector) {
this.connector = Connector;
}
this.client = new PGClient(this.connector.connection_string);
console.log(this.client);
this.client.connect();
}
Database.prototype.close = function() {
return this.client.end();
};
Database.prototype.query = function(sql) {
return this.client.connect(function(err) {
return this.client.query('SELECT NOW() AS "theTime"', function(err, result) {
return result.rows[0].theTime;
});
});
};
return Database;
})();
}).call(this);