使用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 段的结果,从对话中获取有关最新报告的一系列信息。[{mail_id:98,主题:测试,所有者:5757,查看者:5866,时间戳:123566544},{etc...}]
- 获取有关指定标识符的用户的信息 (owner_user_id/viewer_user_id)。
- 在同一个数组中收集所有对话数据。
我停在第三段。也就是说,我不知道如何始终如一地获取有关前两个数组中的用户的信息。
请帮帮我!