NodeJS - MongoDB 触发器

2024-03-01

我正在尝试使用 DerbyJS、Racer 和 MongoDB 开发日志查看器。日志将由不同的源连续插入到 MongoDB 数据库中,我的日志查看器应该能够自动更新用户界面上的日志表。

我想知道是否有一种本地方式来监听 MongoDB 事件,例如:

 - On update
 - On delete

例如,它们类似于 Oracle DB 触发器。


您可以收听类似的事件insert, update,以及 mongodb 中使用名为的特殊集合的其他数据事件oplog。您只需使用以下命令在数据库实例上启用复制即可mongod --master or mongod --replicaSet.

Oplog实际上是一个capped集合,mongodb内部使用它来实现复制。如果您使用主/从复制,您将通过名称找到该集合oplog.$main,如果您使用副本集,它将被命名为oplog.rs.

您可以在 oplog 上使用可尾游标,这应该可行。

Oplog 实际上就是日志本身。因此,您可能不需要出于记录目的单独存储它们。然而它的大小是固定的。这意味着当其完整的旧数据被删除时。

还要确保您正在调查local数据库,这是维护 oplog 的地方

这是一个工作示例蒙戈斯金维基页面 https://github.com/kissjs/node-mongoskin/wiki/Using-tailable-cursors

skin = require "mongoskin"
db = skin.db "localhost:27017/local"

#//Cursor on oplog (a capped collection) which maintains a history for replication
#//oplog can be used only when replication is enabled
#//Use oplog.rs instead of oplog.$main if you are using replica set

oplog = db.collection "oplog.$main"
cursor = oplog.find({'ns': "icanvc.projects"},{tailable: yes, awaitData: yes})

#//Using cursor.nextObject will be slow
cursor.each (err, log)->
    console.error err if err
    console.log log if not err
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJS - MongoDB 触发器 的相关文章

随机推荐

  • 使用动态文件名进行复制

    我正在尝试编写一个函数来将 csv 数据加载到表中 我希望输入参数是文件的路径 CREATE OR REPLACE FUNCTION public loaddata filepathname varchar RETURNS void AS
  • 如何检查 Lucene IndexWriter 实例是否有效/打开?

    抱歉这个简单的问题 但似乎没有任何明显的方法 根据文档 建议保留单个实例IndexWriter存储在内存中 可以一次又一次地用于更新 而不是为每次更改打开和关闭一个内存 这要昂贵得多 然而 文档还指出IndexWriter如果发生异常 例如
  • 我们可以在运行时使用语言选择 UI 本地化 WIX msi 和捆绑包吗?

    我们在 Wix 中创建了 MSI 和捆绑包 我需要对这两者进行本地化 以便弹出语言选择 GUI 并且用户可以在运行时选择语言 如果有人能在这方面帮助我 我将不胜感激 对于 MSI 我正在努力创建另一个引导程序 用于启动语言选择组合框 并使用
  • Kendo UI 网格过滤具有多个值的列

    我一直在使用过滤器在我的 KendoUI 网格上成功搜索 然而 一个新的应用程序有一些多值字段 我的过滤不起作用 它实际上似乎永远旋转 多值字段的示例 field rspPersons title Responsible Persons t
  • 如何使用 Moq 模拟 SqlDataReader - 更新

    我是最小起订量和设置模拟的新手 所以我可以得到一些帮助 如何使用 Moq 模拟 SqlDataReader Update 经过进一步测试 这是我目前所拥有的 private IDataReader MockIDataReader var m
  • 将 charset="utf-8" 添加到 HTML 链接元素有什么效果吗?

    我正在处理一个并非由我创作的 HTML 文档 它包含以下内容 以这种方式指定字符集有什么影响 还是字符集是由 Content Type 响应头确定的 The W3C says http www w3 org International qu
  • react-native-firebase crashlytics 未显示在 firebase 仪表板上

    我正在使用 firebase crashlytics 我这样做导致了崩溃 firebase crashlytics crash and I am not seeing the crash report on the firebase das
  • matlab图中的数据提示定制

    我有一个包含多个图的图表 每个图都来自不同的源文件 我希望数据提示告诉我 X Y 加上源文件的名称 长期以来 我最好的尝试 没有成功 是这样的 dcm datacursormode gcf datacursormode on set dcm
  • 画布下方的白色空白区域

    花了几个小时摆弄代码后 我遇到了一个问题 我创建了一个灰色的 HTML 画布 它将填满整个屏幕 并且它起作用了 但是 即使画布应该是屏幕上唯一可见的对象 当我向下滚动时 页面底部似乎仍然有一个小的白色空白区域 我已经知道这与身体无关 因为我
  • 在框架内打开 https 页面是否存在问题

    我以编程方式创建一个 html 报告 分为两个框架 如果用户随后单击右侧框架上的超链接 则该框架将被页面内容替换 这工作正常 但现在当我尝试链接到任何 Discogs 发布页面时 例如this one https www discogs c
  • 帮助解决密码复杂性正则表达式

    我使用以下正则表达式来验证密码复杂性 6 12 0 9 2 A Z 2 a z 2 简而言之 2个小写字母 2个大写字母 2个数字 最小长度为6 最大长度为12 当我使用最小长度时 除了最大长度之外 它工作得很好 例如 6 0 9 2 A
  • oracle sql 日期不晚于今天

    我需要显示一些数据 如果它是 新数据 更新数据 比方说 我将从发布日期列和更新列中获取这些数据 其中发布日期和更新日期都是时间戳 那么如果是新的日期如何计算呢 过去 24 小时 Where publish date gt sysdate 1
  • Python 中的 Yaml 合并

    所以我正在考虑用 Python 为 Pygame 制作一个小样板库 当然还有任何愿意使用它的人 我想要一个通过 yaml 文件提供应用程序设置的系统 因此 我认为如果库提供默认的 yaml 树并将其与用户提供的树合并 将会很有用 为了可用性
  • 如何同时运行 Windows Phone 7 模拟器的多个实例?

    我正在为 Windows Phone 7 创建多人游戏 如何运行模拟器的多个实例来调试它 您确实可以同时运行 Windows Phone 7 模拟器的多个实例 甚至可以同时调试它们 如我在我的文章中所示博客文章 http blog func
  • shell脚本中的cd命令是否加载目标目录中的rvmrc?

    当你有类似 在projectx内部给出一个 rvmrc文件 指定ruby 1 9 2并且我的系统上有两个ruby ree 1 8 7和ruby1 9 2 bin bash cd applications projectx which rub
  • flex-flow:列换行,在弹性框中导致父容器溢出

    我有这样的场景 https jsfiddle net b6zcdgf7 https jsfiddle net b6zcdgf7 container display flex height 3em border solid thin blue
  • H2数据库用户定义的java函数类未找到

    当我创建一个 ALIAS 来在 H2 数据库中注册 java 函数时 它给出了未找到类的错误 我正在 TCP 连接上运行 h2 数据库 sample public class TimeFrame public static void mai
  • 如何从 Java 将焦点集中到 shell 打开文件的默认程序?

    在 Java 中 我使用默认文件处理程序 MS Excel 在本例中 打开一个 Excel 文件 使用中描述的方法这个计算器问题 https stackoverflow com questions 2114318 opening an ex
  • 在 C# 中,如何捕获 Web 服务调用中使用的 SOAP?

    我有一个 C 应用程序 它是 Web 服务的客户端 我的要求之一是允许捕获我发送的 SOAP 这样如果出现问题 我可以修复错误 或者证明问题出在我正在调用的服务中 我的 WebReference 代理服务类派生自System Web Ser
  • NodeJS - MongoDB 触发器

    我正在尝试使用 DerbyJS Racer 和 MongoDB 开发日志查看器 日志将由不同的源连续插入到 MongoDB 数据库中 我的日志查看器应该能够自动更新用户界面上的日志表 我想知道是否有一种本地方式来监听 MongoDB 事件