如何将Meteor站点连接到现有数据库&采集?

时间:2016-02-24 21:08:44

标签: mongodb meteor

我有服务器&客户端文件,我试图将一些数据发送到Javascript而不是模板。在模板中,我可以输出一些值,但我需要在JS中将标记添加到Leaflet。

我想,通过模板将数据汇集到JS并进入Leaflet是没有意义的,对吗?

我做错了什么?

PixelWriter

运行服务器:

$ mongo
MongoDB shell version: 2.4.9
connecting to: test
> use atms
switched to db atms
> db.markers.count()
1868

LIB / collections.js

$ MONGO_URL=mongodb://127.0.0.1:27017/atms meteor

client / client.js 中,我尝试从集合中获取记录,但它是空的:

Markers = new Meteor.Collection('markers');

在模板中,它显示一条记录,表示连接有效。但控制台输出为Template.hello.helpers({ marks: function () { // this data renders correctly on map return Markers.findOne({}) } }); Template.hello.onRendered(function() { // this data is empty in console var query = Markers.find().fetch(); console.log(query); });

2 个答案:

答案 0 :(得分:1)

主要问题是您在客户端和服务器上有2个不同的Markers集合。因此,在客户端上,meteor访问客户端标记集合,并且不显示任何数据。集合定义应该在客户端和服务器之间共享,而不是重复。

创建一个文件夹lib并将集合定义放在那里

//lib/collections.js
Markers = new Mongo.Collection('markers')

删除serverclient文件夹中的集合定义。

另外,请注意,当您使用分隔的mongo实例时,反应性会非常缓慢(与嵌入式mongo相比,反射速度为2或3倍)

答案 1 :(得分:0)

非常肯定这里有答案:

Using Multiple Mongodb Databases with Meteor.js

关于语法的注释,在1.2.1版中,您希望将Meteor集合声明为全局变量,以便可以在您键入的文件之外访问它。此外,您希望将此行放在/ lib或客户端和服务器都可以访问的目录中。

Markers = new Mongo.Collection('markers')