使用node.js時出現問題。所有人都試圖在代碼的評論中描述。數據庫查詢中的異步
我需要用對話框和最後一個meggase的一些信息構建一個對話框數組的第一件事。
IM = {
iUserId: false,
socket: false,
checkDialog: function(socket) {
this.socket = socket;
// Returned [{owner: 123, viewer: 432}]
var sql = 'SELECT DISTINCT(`owner_user_id`), `viewer_user_id` FROM `phpfox_mail` WHERE `owner_user_id` = ' + this.iUserId + ' GROUP BY 1,2 UNION SELECT DISTINCT (`viewer_user_id`), `owner_user_id` FROM `phpfox_mail` WHERE `viewer_user_id` = ' + this.iUserId + ' GROUP BY 1,2 ORDER BY 1 ';
connection.query(sql, function(err, rows) {
if (err) throw err;
async.map(rows, function(item, nextParent) {
var sql = 'SELECT `mail_id`, `subject`, `preview`, `owner_user_id`, `viewer_user_id`, `viewer_is_new`, `time_stamp` FROM `phpfox_mail` WHERE (`viewer_user_id` = ' + item.viewer_user_id + ' OR `owner_user_id` = ' + item.viewer_user_id + ') AND (`viewer_user_id` = ' + item.owner_user_id + ' OR `owner_user_id` = ' + item.owner_user_id + ') ORDER BY `mail_id` DESC LIMIT 1';
var dialogs = [];
connection.query(sql, function(err, rows) {
// ???
});
}, function(err, item) {
// Here I have to get the generated array with all the necessary dialogue.
console.log(item);
IM.socket.emit('logger', {text: 'dataIsABuilding', key: 'success'});
IM.socket.emit('dialogsBuilding', item);
});
});
}
};
目的:要創建的關於該消息的和對話者信息的數組。
方案:
- 獲取所有對話者的數組。 [{owner_user_id:5757,viewer_user_id:5866},{etc ...}]
- 使用第1段的結果,從對話中獲取最新報告的信息數組。獲取有關指定標識符(owner_user_id/viewer_user_id)的用戶信息。[{mail_id:98,subject:test,owner:5757,viewer:5866,timestamp:123566544},{etc ...}]
- 收集同一陣列中對話的所有數據。
我停在第三段。也就是說,我不知道如何持續獲得前兩個陣列中用戶的信息。
請幫助我!
愛的帖子沒有直接的問題和大量的評論代碼排序通過...忽略諷刺,這將有助於,如果你要清理這個,很多,並用問號結束你的一個句子,最好一個包含某種查詢的新句子。在代碼評論中提出問題很簡單,並且讓代碼突出顯示幫助我們閱讀它!更不用說,我不確定評論代碼是否是問題的一部分,您的意圖是修復問題的一部分,還是在您從機器上覆制粘貼後忘記刪除它。 – ChrisCM
@ChrisCM明白了。現在修復它。 – RomanGorbatko
仍然有很大一部分註釋代碼...至少請修剪代碼(包括註釋和未註釋)到您試圖在您的機器上運行的最小一組內容,這些內容展示了您描述的問題。 – ChrisCM