使用 MySql/Node js 创建通知服务器
Posted
技术标签:
【中文标题】使用 MySql/Node js 创建通知服务器【英文标题】:Create a notification server using MySql/ Node js 【发布时间】:2013-09-05 17:27:54 【问题描述】:我正在做一个项目,每当触发数据库事件时,我都应该发布通知。
我为此使用 NODE。但是我不确定我是否能够做到。
我遇到了this 关于 SO 的问题,但没有多大帮助。
我还看到了 NODE.js mysql Connectors
我真正的问题是什么:
1) 有没有类似在 Node js 中读取 MySql 触发器的东西。 ?我可以在所需表格中输入一行后立即推送通知吗?
2) 如果是,我应该怎么做?
3) 如果不可能,我必须每隔几秒钟手动检查一次数据库更改,为什么我应该使用 Node.js 而不是每隔几秒钟使用浏览器进行异步调用jQuery?
任何帮助都会得到帮助......!
【问题讨论】:
【参考方案1】:据我所知,在 Node 中读取数据库触发器没有任何简单的方法,因此一个常见的解决方案是使用 Redis 作为发布系统,并使用连接器模块执行实际的数据库查询。一个非常流行的用于 Node 的 MySQL 连接器是 this 连接器,所以我将使用它作为示例。
在使用模块时,您正在寻找的“MySQL 触发器”只是在大多数异步模块中都能找到的简单回调。下面是一个使用node-mysql
模块的查询示例:
var post = id: 1, title: 'Hello MySQL';
connection.query('INSERT INTO posts SET ?', post, function(err, result)
//the database transaction has completed, notify the client
);
当回调被调用时,这意味着数据库操作要么完成,要么失败(检查回调中的err
属性以检查这一点)。然后,您可以使用 EventSource/Server-Sent Events 或 WebSockets 将此更改发送到浏览器。
作为对第三个问题的一个侧面回答,将数据从服务器推送到客户端总是比客户端持续请求数据更有效,因为当客户端请求数据时,服务器不能保证有需要的数据。
【讨论】:
我可以在某处获得“node-mysql”的完整文档吗?你能解释一下你写的代码吗?我对 Node JS DB 并不陌生 第三个答案+1..虽然我对前两个解释并不完全满意......所以不接受它作为答案.. 该模块的文档位于 GitHub 页面上,与我的答案中的链接相同。我编写的代码在已建立的数据库连接上执行插入,并在回调中返回结果。以上是关于使用 MySql/Node js 创建通知服务器的主要内容,如果未能解决你的问题,请参考以下文章
使用带有 Javascript 的 MySQL (node.js)