私はNode.jsでシステムを開発しています。状況は次のとおりです。私にIdリストを返すプロミスがあり、そのプロミス(その時)の代わりに、最初のメソッドで返された項目のそれぞれについてクエリを実行する必要があります。returnそれぞれのために約束する
これを行うにはどうすればよいでしょうか?
checkLastPosition(list) {
let returnList = new Array();
var actualDate = new Date();
list.forEach(function (item) {
return new Promise((resolve, reject) => {
pool.getConnection(function (err, connection) {
if (err)
reject(err);
let sql = ' select * from posicao loc';
sql += ' where veiculoid = ?';
sql += ' and loc.dataHora = (select max(dataHora) from posicao where veiculoId = loc.veiculoId)';
sql += ' order by loc.veiculoid, datahora desc';
connection.query(sql, item.veiculoid, function (err, rows) {
connection.release();
if (err)
reject(err);
resolve(rows[0]);
});
});
}).then(result => {
if (!result) {
returnList.push(item.veiculoId);
} else {
if (new Date(result.dataHora.toLocaleString()) <= actualDate.setMinutes(actualDate.getMinutes() - 10)) {
returnList.push(item.veiculoId);
}
}
});
}, this);
}
'forEach'の代わりに' map'を使用して、Promiseの結果の配列に 'Promise.all'を適用します。 – Bergi
どうすればいいですか? –