0

注意していただきありがとうございます。私はコードに閉じ込められています。私は本当に優れた 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);
4

2 に答える 2