javascript - 如何循环遍历mysql数据库中的消息并正确显示它们

标签 javascript mysql node.js socket.io

我正在构建一个聊天程序。

每次用户发送消息时,它都会存储在名为“消息”的表中。该表如下所示: enter image description here

当用户断开连接并稍后再次连接时,旧消息应以与发送时相同的方式显示。 在图像中,您可以看到收到的消息是灰色的,其他消息是蓝色的: enter image description here

当用户连接时,我将使用以下代码检索旧消息:

// Retrieve conversation
	client.on("retrieveConversation", function(data){
		var peopleName = data.result.conversation_receiver;
		var retrievedMessages = [];
		connection.query("SELECT * FROM `messages` WHERE `message_key` = '" + data.result.conversation_key + "'", function(error, results, fields){
			if (error) {
            console.log(error);
            return;
        	} 
        	else if (results) {
          		console.log("Messages: ", results);
        	} 
		});
		console.log("Retrieving conversation", peopleName);
		client.emit("addConversationForSelf", peopleName);
	});

结果在控制台中如下所示: enter image description here

如何循环遍历结果并控制哪些消息(来自正文)应发送到: 1.client.emit("newMessageToOthers", message); 或 2.client .emit("ownMessage", message); - 请注意,这两个选项控制消息是灰色还是蓝色。

最佳答案

类似这样的事情

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')}});

关于javascript - 如何循环遍历mysql数据库中的消息并正确显示它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43894986/

相关文章:

javascript - 指令无法替换模板中的变量 : Syntax Error

通过在查询字段中添加而不是在索引中,MYSQL索引速度更快

node.js - 无法在 websocket ping 中调用 redis.get() 函数

javascript - 无法访问从 mongoose findOne() 返回的 json 中的键

javascript - Grails-如何验证 gsp 中参数的值?

javascript - jQuery 自动播放 HTML5 音频

java - 使用 DriverManager 连接到外部 mysql 数据库 - Java

mysql - 在 codeigniter 中使用 $this->db->e​​scape 时如何防止单引号

node.js - 可以在离线的内网环境下使用Cordova吗?

javascript - 如何在 turn.js 中禁用剥离(悬停效果)?