NodeJSとJSの世界的な新機能ですが、MySQLのクエリを通じてObject Propertyを設定しているうちに困ります。NodeJS/MySQL /約束の問題
私は悪い非同期効果を避けるためにPromiseを使用していますが、明らかに私はそれを間違っています、私のエージェントObejctのプロパティは決して更新されません。ここで
コードです:
class Agent {
constructor(agentId, agentName, agentCountry) {
this.agentId = agentId;
this.agentName = agentName;
this.agentCountry = agentCountry;
}
setAgentCountry() {
var promise = function(agentID) {
return new Promise(function(resolve, reject) {
var query = "SELECT c.CountryID, c.CountryName FROM AgentCountry ac, Country c WHERE ac.AgentID = '" + agentID + "' AND ac.CountryID = c.CountryID";
connection.query(query, function(err, results) {
if (!err) {
resolve(results);
} else {
console.log('Error while performing Query.');
}
});
});
}
promise(this.agentID).then(function(data) {
var string = JSON.stringify(data);
var json = JSON.parse(string);
//the agent property is never updated !!
this.agentCountry = json;
}.bind(this), function(err) {
console.log(err);
});
}
}
私は方法をこのように呼ん:
var agent = new Agent(1,"John Doe", "France");
console.log(agent.agentCountry); //Displays "France"
agent.setAgentCountry();
console.log(agent.agentCountry); //Did not display the table of countries it should
あなたはこれで私を助けてもらえますか?
おかげ
https://www.npmjs.com/package/promise-mysql – bxN5