我试图在我的Meteor应用程序中保存一个集合。未保存到指定的Mongo URL的流星 - 集合
到目前为止,我有这个代码简单位:
MyCollection = new Mongo.Collection("Dogs"); console.log(MyCollection.find({}));
这将创建集合作为控制台日志证实了它的存在。但是,它不是在我指定的Mongo URL中创建它。
我在本地运行应用程序并使用以下命令指定蒙戈网址:
MONGO_URL='<MyURL>' meteor
此字符串似乎当我注册了一个用户一个用户收藏的创建和应用工作我指定的数据库中的meteor_accounts_loginServiceConfiguration集合。
然而,创建集合“狗”的代码 - 这是连接到一个按钮点击 - 无法在数据库中创建一个新的集合,但它在其它地方创建。
我只能假设这是由Meteor提供的当地Mongo创建的?
而且,我已经尝试设置我的settings.json文件有以下几点:
{
"galaxy.meteor.com": {
"env": {
"MONGO_URL": "<MongoURL>"
}
}
}
和部署时指出应用到它。这似乎也是因为创建新用户更新了我的数据库中的“用户”集合。但是,问题依然存在,'Dogs'集合没有在我指定的Mongo数据库中创建。
有没有人知道为什么会出现这种情况?我错过了什么?
非常感谢您的帮助,
摹
UPDATE
这个方法我试过:
var database = new MongoInternals.RemoteCollectionDriver("<mongo url>");
MyCollection = new Mongo.Collection("collection_name", { _driver: database });
我在这里找到:Using Multiple Mongodb Databases with Meteor.js
但是,这无法在我的MongoDB中创建任何集合。
另一个更新
看这个问题后:
https://forums.meteor.com/t/how-to-view-collection-contents-using-console-log/23852/12
我试过如下:
我创建了一个文件夹,名为服务器,并在其中一个叫主文件。 js其中包含以下内容:
const Tasks = new Mongo.Collection('tasks');
Tasks.insert({_id: 'my-todo'});
if (Meteor.isServer) {
// This code only runs on the server
Meteor.publish('tasks', function() {
return Tasks.find();
});
}
在我的客户端上的应用程序,我下面的代码添加到我的JS文件:
if (Meteor.isClient) {
Meteor.subscribe('tasks');
}
根据帮助论坛这应该工作。
它部分工作 - 任务集合在我指定的Mongo URL中创建并且任务被插入到其中。
但是,我不知道如何在客户端显示它。
有什么建议吗?
谢谢!:)
我写从客户端是的。请你能解释我将如何写/调用一种方法? – GeorgeBT
嗨@ d4nyll你可以看看我的更新问题 - 这是你的意思? – GeorgeBT
它正在向写入方向移动。您使用Meteor方法来编写/更新数据库,并使用发布/预订来允许客户端从数据库读取数据。你可能会让他们混在一起。 我写了一个更加深入的流星教程 - https://scotch.io/tutorials/building-a-slack-clone-in-meteor-js-getting-started - 它可能是值得的看一看,因为它比meteor.com的教程更详细地解释了这些概念 – d4nyll