5

オブジェクト メソッドを関数の引数として渡すとき、メソッドのコンテキスト (this) が正しく設定されていることを確認するために、「bind」を使用する必要があります。それから私のコードにはたくさんのバインドがあります...これはJSコードを書くためのきれいな方法ですか? メソッドを渡すための推奨される設計パターンは何ですか? オブジェクト全体を渡すか、オブジェクトを再設計する必要がありますか?

ありがとうございました。

ご参考までに、私のコードをここに貼り付けました。これは間違いなく良いコードではありません。たとえば、おそらく、1 つずつ呼び出すのではなく、複数の SQL ステートメントを使用したいと思うかもしれません。

function insertDB(response, postData) {
  var mysql      = require('mysql');
  var async      = require('async');
  var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'user',
    password : 'pswd',
    database : 'mydb',
  });

  async.series([
    connection.connect.bind(connection),
    async.apply(connection.query.bind(connection),
        "CREATE TABLE IF NOT EXISTS concepts ("+
        "name VARCHAR(64) NOT NULL,"+
        "priority INT NOT NULL DEFAULT 0,"+
        "date DATE NOT NULL,"+
        "notes VARCHAR(256),"+
        "PRIMARY KEY (name))"),
    async.apply(connection.query.bind(connection),
        "INSERT INTO concepts VALUES('" +
        postData["word"] + "',0,CURDATE(),'')"),
    connection.end.bind(connection)
  ], 
  function(err, result) {
    if (err) console.error(err);
  });
}
4

1 に答える 1