let infoSelectSql = "select id, message_id, type_id from user_message_record where uid = ? order by id desc limit ?,?";
pool.getConnection((err, connection) => {
connection.query(
infoSelectSql,
[userLoginInfo.uid, sqlParams.startIndex, sqlParams.dataLength],
(err, rows) => {
if(err) {
throw err
} else {
console.log("rows == ", rows);
for(let i = 0; i<rows.length; i++) {
(function(indexSelect){
if(rows[indexSelect].type_id === 0) { // 征婚
userInfoDetailSql = `select id, title, content, dateline, rental, address from tenant_message where id=${rows[indexSelect].message_id}`;
} else if(rows[indexSelect].type_id === 1){ // 租房
userInfoDetailSql = `select id, title, content, dateline, rental, address from tenant_message where id=${rows[indexSelect].message_id}`;
} else if(rows[indexSelect].type_id === 2) { // 拼车
userInfoDetailSql = `select id, title, content, dateline, rental, address from tenant_message where id=${rows[indexSelect].message_id}`;
}
connection.query(
userInfoDetailSql,
[],
(err, rows) => {
if(err) {
throw err
} else {
console.log(rows);
if(rows.length !== 0) {
messageArray.push(rows);
}
}
}
);
})(i);
console.log('messageArray == ', messageArray); // 这里打印是空
result["code"] = "0001";
result["message"] = "success";
result["data"] = messageArray;
res.status(200);
res.send(JSON.stringify(result));
}
}
}
);
pool.releaseConnection(connection);
能正确获取到数据,但是无法返回
for(let i = 0; i<rows.length; i++) {
if(rows[i].type_id === 0) { // 征婚
userInfoDetailSql = `select id, title, content, dateline, rental, address from tenant_message where id=${rows[i].message_id}`;
} else if(rows[i].type_id === 1){ // 租房
userInfoDetailSql = `select id, title, content, dateline, rental, address from tenant_message where id=${rows[i].message_id}`;
} else if(rows[i].type_id === 2) { // 拼车
userInfoDetailSql = `select id, title, content, dateline, rental, address from tenant_message where id=${rows[i].message_id}`;
}
connection.query(
userInfoDetailSql,
[],
(err, rows) => {
if(err) {
throw err
} else {
console.log(rows);
if(rows.length !== 0) {
messageArray.push(rows);
}
}
}
);
Promise.all(messageArray).then(v=>{
console.log("v == ", v);
});
// console.log('messageArray == ', messageArray);
// result["code"] = "0001";
// result["message"] = "success";
// result["data"] = messageArray;
// res.status(200);
// res.send(JSON.stringify(result));
}
异步吧。。。await支持就用。
最简单的就是把res.send那块都放入回调中。
因为是循环,写起来多少有点难。那就考虑promise吧。
promise方案
把所有的异步都统计到一起。然后all的时候再执行res.send