Javascript 如何循环使用mysql数据库中的消息并正确显示它们
我正在建立一个聊天程序 每次用户发送消息时,它都会存储在一个名为“messages”的表中。该表如下所示: 当用户断开连接,然后再次连接时,旧消息的显示方式应与发送时相同。 在图像中,您可以看到收到的消息为灰色,其他消息为蓝色: 当用户连接时,我使用以下代码检索旧邮件:Javascript 如何循环使用mysql数据库中的消息并正确显示它们,javascript,mysql,node.js,socket.io,Javascript,Mysql,Node.js,Socket.io,我正在建立一个聊天程序 每次用户发送消息时,它都会存储在一个名为“messages”的表中。该表如下所示: 当用户断开连接,然后再次连接时,旧消息的显示方式应与发送时相同。 在图像中,您可以看到收到的消息为灰色,其他消息为蓝色: 当用户连接时,我使用以下代码检索旧邮件: //检索对话 client.on(“retrieveConversation”,函数(数据){ var peopleName=data.result.conversation\u接收器; var retrievedMess
//检索对话
client.on(“retrieveConversation”,函数(数据){
var peopleName=data.result.conversation\u接收器;
var retrievedMessages=[];
connection.query(“从`messages`中选择*,其中`message_key`='”+data.result.conversation_key+”,函数(错误、结果、字段){
如果(错误){
console.log(错误);
返回;
}
如果有的话(结果){
日志(“消息:”,结果);
}
});
log(“检索对话”,peopleName);
emit(“addConversationForSelf”,peopleName);
});代码>类似这样的代码
var results = [{body: 'Hi', userfrom_id: 'abc'}, {body: 'Hi', userfrom_id: 'xyz'}, {body: 'Hi', userfrom_id: 'abc'}]; //this is your result from database
var currUser_id = 'abc'; //this is current user
//loop
results.forEach(function(packet){if(packet.userfrom_id == currUser_id){console.log('my packet');}else{console.log('other user packet')}});
在循环时,您是否知道userfrom_id以区分“ownMessage”和“newMessageToOthers”?抱歉@vabii,我不理解您的问题?userfrom_id与消息一起存储。我已经用消息表的外观图像更新了我的问题。要知道RowDataPacket是属于您还是属于任何其他用户,您需要从_id了解您的用户,对吗?我问你是否有这些信息,这样在循环过程中,你可以调用上面两个“client.emit”调用中的一个。如果我的问题还不清楚,请告诉我?是的。当用户发送消息时,他们的id将添加到每条消息中。