NodeとMySQLを使用してショッピング割り当ての一部としてJavaScriptオブジェクトを書き込もうとしています。私は関数型プログラミングよりもOOPを増やして自分自身をテストしたいと思っていました。私は、選択されたアイテム、数量、および総コストのプロパティを持つTransactionオブジェクトのコンストラクタを作成しています。また、アイテムを表示したり、アイテムを選択したり、アイテムを購入する方法もあります。Node.jsスコープとMySQLクエリ関数コールバック
始めに、ユーザーが有効な製品を選択したことを確認するユニークなitemIDの配列も必要でした。 this.ids []がオブジェクトのスコープで定義されている場合は未定義であるスコープの問題が発生しています。下の私の解決策は、スコープを避けるためにローカルでそれを定義し、その配列を引数として渡すことです。この解決策では、トランザクションオブジェクトのスコープ付き変数にアクセスすることもできません。私は
....
console.log(this.totalCost, this.ids);
});
}.call(this);
しようとした
this.listProducts = function(connection) {
connection.query("SELECT * FROM products WHERE stock_quantity>0", function(err,res) {
if (err) throw err;
this.ids = [];
for (var i = 0; i < res.length; i++) {
this.ids.push(res[i].item_id);
console.log(res[i].item_id + " " + res[i].product_name + " " + res[i].price);
}
// res.forEach(function (element) {
// console.log("this.ids=",this.ids);
// this.ids.push(element.item_id);
// console.log(element.item_id + " " + element.product_name + " " + element.price);
// });
connection.end();
console.log(this.totalCost, this.ids);
});
};
私はTypeError: connection.query(...).call is not a function
は私がすべてを台無しに私のスコープを持っていますか取得しますか?スコープの問題を修正して、「トランザクション」オブジェクトのスコープにアクセスできるようにするにはどうすればよいですか?
は、私はここにあなたがそれが定義された場所にこれを結合し
新しいarrow機能を使用できる2つのオプションがあると信じて
ようこの参照を格納?私は[Sequelize](http://sequelizejs.com)が一般的に低レベルのMySQLドライバを叩くよりもずっと優れていることを発見しました。 – tadman