如何配置mongodb以与meteor一起使用(was:如何使meteor对直接mongod更改作出反应)
下面是原始问题,以便第一个答案有意义。但事实证明,真正的问题是,如果您自己创建数据库,而不是让meteor创建数据库,那么您需要配置mongodb以便与meteor一起使用 原始问题: 我正在构建一个meteor应用程序,它显示一个项目列表。如果我使用HTML应用程序向已发布列表中添加或删除条目,它会在所有浏览器实例中立即响应。但是,如果我使用DirectMongoDBAPI对数据库进行更改,浏览器不会立即更新。(我的实际场景是从数据源发布这些条目,而不是从浏览器发布。) 问题是,在这个单独的应用程序中,我需要做什么,它将数据插入mongo,以便meteor应用程序立即看到更改。只要您:如何配置mongodb以与meteor一起使用(was:如何使meteor对直接mongod更改作出反应),mongodb,meteor,Mongodb,Meteor,下面是原始问题,以便第一个答案有意义。但事实证明,真正的问题是,如果您自己创建数据库,而不是让meteor创建数据库,那么您需要配置mongodb以便与meteor一起使用 原始问题: 我正在构建一个meteor应用程序,它显示一个项目列表。如果我使用HTML应用程序向已发布列表中添加或删除条目,它会在所有浏览器实例中立即响应。但是,如果我使用DirectMongoDBAPI对数据库进行更改,浏览器不会立即更新。(我的实际场景是从数据源发布这些条目,而不是从浏览器发布。) 问题是,在这个单独的应
数据库更新
。这是Meteor的默认行为。一切都应该正常
更清楚的是:您不需要对访问MongoDB的其他应用程序执行任何操作 你可以从命令行手工编辑MongoDB——只要你像我上面所说明的那样连接好所有东西——所有东西都会像有人使用你的Meteor应用程序一样工作。MongoDB是Meteor中的一个反应源,因此,Meteor将以反应方式提供这些数据,无论数据库如何更改。这是默认的行为
向我们展示您的代码: 如果您在这里或作为Github的链接共享有问题的代码,我将编辑我的答案,指出您的代码没有这样做的原因
更多阅读: 我强烈建议你花点时间阅读全文(我有)。这解释了Meteor的“反应性”是如何工作的,并且应该教会您所有需要知道的关于代码为什么不工作的知识。这本书其实很容易读,只是很长。如果在阅读之后,仍然不清楚-我很乐意与您进行skype对话,并逐行解释代码中发生的事情。在《流星》中,你要做的其实很简单 您还可以去看看MongoDB的
oplog
是如何与Meteor进行通信的,以提供您所需要的灵敏反应。正如刚才所说。如果您的MongoDB没有oplog
设置,那么meteor将返回轮询(这显然要慢一些)。(谢谢stubilo)只要您:
数据库更新
。这是Meteor的默认行为。一切都应该正常
更清楚的是:您不需要对访问MongoDB的其他应用程序执行任何操作 你可以从命令行手工编辑MongoDB——只要你像我上面所说明的那样连接好所有东西——所有东西都会像有人使用你的Meteor应用程序一样工作。MongoDB是Meteor中的一个反应源,因此,Meteor将以反应方式提供这些数据,无论数据库如何更改。这是默认的行为
向我们展示您的代码: 如果您在这里或作为Github的链接共享有问题的代码,我将编辑我的答案,指出您的代码没有这样做的原因
更多阅读: 我强烈建议你花点时间阅读全文(我有)。这解释了Meteor的“反应性”是如何工作的,并且应该教会您所有需要知道的关于代码为什么不工作的知识。这本书其实很容易读,只是很长。如果在阅读之后,仍然不清楚-我很乐意与您进行skype对话,并逐行解释代码中发生的事情。在《流星》中,你要做的其实很简单
您还可以去看看MongoDB的
oplog
是如何与Meteor进行通信的,以提供您所需要的灵敏反应。正如刚才所说。如果您的MongoDB没有oplog
设置,那么meteor将返回轮询(这显然要慢一些)。(谢谢斯塔比洛)如果没有杰米的回答和对oplog的评论,我永远也不会明白这一点。最后他说的一切都是真的。问题是我在没有打开oplog的情况下创建了一个单节点mongdb实例。然而,meteor要求启用oplog以确保反应性正常工作
有关打开oplog的详细说明,请访问或
但这里有一个简短的Ubuntu自包含版本:
首先编辑/etc/mongodb.conf并添加
replication:
replSetName: rs0
oplogSizeMB: 100
然后使用mongo连接到数据库并键入
use local
rs.initiate()
然后在启动meteor应用程序之前,将MONGO_URL设置为指向远程数据库,并将MONGO_OPLOG_URL设置为指向远程数据库上的本地数据库。例如:
export MONGO_URL="mongodb://mongohost:27017/simple"
export MONGO_OPLOG_URL="mongodb://mongohost:27017/local"
meteor run
如果没有杰米的回答和对oplog的评论,我永远也不会明白这一点。最后他说的一切都是真的。问题是我在没有打开oplog的情况下创建了一个单节点mongdb实例。然而,meteor要求启用oplog以确保反应性正常工作 有关打开oplog的详细说明,请访问或 但这里有一个简短的Ubuntu自包含版本: 首先编辑/etc/mongodb.conf并添加