我一直在努力在本地计算机上可靠地共享两个不同的流星应用程序(管理员和客户端)之间的数据库。我可以让它有时工作,但其他人虽然我所有的尝试并重置数据库,重启机器,清除缓存等等,它将无法连接一整天。
我的问题是为了使这项工作可靠,究竟是什么步骤?
以下是我过去曾经有过的工作:
为我的meteor客户端应用程序打开我的Webstorm IDE,并在我运行的项目的终端中打开: meteor run 。一旦建立连接,我按ctrl + c终止连接并切换到流星管理应用程序然后运行: MONGO_URL =“mongodb://127.0.0.1:3001 / meteor”meteor
这已经多次工作,两个应用程序共享相同的mongo数据库。然而,这对我来说并不可靠,因为在关闭或关闭Webstorm之后的某些时候,我无法让它们正确连接并共享同一个数据库。我原本以为我只需要重新启动或关闭webstorm的终端会话,但这也不可靠。任何帮助都将非常感激。
更新 我也尝试打开两个单独的终端会话并执行以下操作无济于事:
终端1-客户端:meteor(按预期运行客户端应用程序) 终端1-客户端:ctrl + c杀死正在运行的应用程序
终端2-管理员:MONGO_URL =“mongodb://127.0.0.1:3001 / meteor”meteor(无法连接到以前的客户端数据库,无法运行管理应用程序并出现此错误:W20151019-13: 30:40.334(-5)?(STDERR)错误:无法连接到[127.0.0.1:3001])
答案 0 :(得分:0)
如果这些是真正的“本地”数据库,那么您不应期望能够彼此访问它们。
本地 MongoDB [数据库]是在“isClient”代码块或/ client文件夹层次结构中创建的,使用无名称或null来定义它,就像这样:
PlatypusCollection = new Mongo.Collection(null);
OTOH,如果你给这个集合命名,就像这样:
PlatypusCollection = new Mongo.Collection('platypus');
...(并将此代码放在除“isClient”块或“client”文件夹或其子文件夹之外的某处),它将是服务器端集合,可由服务器发布并由客户端。默认情况下(通过autopublish和insecure软件包),所有人都可以使用所有服务器端集合。
如果您希望同时运行同一个Meteor应用程序的两个实例,则需要在3000以外的端口上运行其中一个。从命令行,您需要执行类似的操作这样:
meteor --port 3042
这可能会有所不同,具体取决于您正在开发的操作系统(提示管理StackOverflow Meteor相关标签的Meteor-monitors / master:可能有值得拥有meteor-windows,meteor-linux,meteor- ios标签,或类似的东西)。
默认情况下,Meteor应用程序的第一个实例将在localhost:3000上运行,但是在“城镇”中没有足够的空间让两个应用程序同时运行,因此必须“退出道奇”。
然后(在确保两者都在自己的端口上运行之后),两个Meteor应用程序实例都应该能够访问相同的MongoDB数据库(前提是它不是真正的本地(Minimongo)数据库,如上所述)。
类似于Meteor应用程序的第一个实例在端口3000上默认运行的方式,默认情况下相关的MongoDB实例在端口3001上运行,因此不要为第二个应用程序实例提供端口号(除非您明确指定了MongoDB)一个不同于默认值的端口号。