某些资源是在数据库的某个表中创建新行。
是否可以在发生这种情况时通知我的节点应用程序(如事件)?连接到数据库,我使用sequelize.js
。不确定这是否重要。
任何想法都会受到欢迎。
答案 0 :(得分:1)
要理解您的问题,我假设您正在寻找在表中插入行的时间。
简短且可能是最“正确”的答案是:不,你不能。
更长的答案是:您可以... 但是它可能不会很漂亮或没有效率。
这里您只需要做的就是跟踪表中当前存在的行,创建一个间隔循环,查询SQL表以查看其有多少行。从那里,您将知道它是否已更改。 SELECT COUNT(*) FROM mytable
是您要使用的SQL语句。
鉴于您的主键也会自动递增,因此您无需执行MUCH即可查找添加到表中的内容。如果没有,您将需要在应用程序中缓存表,循环遍历并找出奇数记录。这样效率不高。
请参见下文,了解一种无需缓存的更直观的方法。
SQL触发器可能是您最好的选择。例如,如果要收听的表是“用户”表,则在插入记录以将其添加到名为“ users_update”的单独表中时,将为“用户”定义触发器,该表将在其中添加包含以下信息的行:对“用户”表的引用。
在您的Node应用程序中,您将需要编写一些代码来检查“ users_update”表,以查看是否有间隔地向表中添加了任何内容。从那里处理它,并将其从表中删除,这样您就不必再次处理它,然后您就会知道何时将内容添加到用户表中。
这里是good reference to learn how to make triggers。触发器有些棘手,但是一旦您学习了如何添加到新表中,就可以使用此方法。
如果您想简化设置并有效使用SQL数据库和Node应用程序,则建议这样做。
另一个资源消耗较少的方法是使用SQL触发器从命令行启动外部NodeJS应用程序。如果是you look at the accepted answer here,您会看到可以从中调用外部EXE文件。您将需要调用NodeJS可执行文件,然后将路径传递到通过套接字(example included)连接到NodeJS应用程序的辅助NodeJS应用程序。然后,您将使用SQL将参数以及您希望其发送到主应用程序的数据传递给辅助NodeJS应用程序。您的主要NodeJS应用程序将仅等待套接字消息,以便您可以根据需要处理数据。 除非您实际上需要某种有效的SQL更新通讯,否则这可能比值得的工作更多。
我不完全确定是否存在可以与NodeJS应用程序一起使用来添加触发器的模块,但是我确定如果您在某个地方挖得足够深,有人会找到可以使用的模块您需要做什么。
很抱歉,如果我没有为您提供任何真实的例子。您的问题有点复杂,无法直接解决。