我有服务器&客户端文件,我试图将一些数据发送到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);
});
。
答案 0 :(得分:1)
主要问题是您在客户端和服务器上有2个不同的Markers
集合。因此,在客户端上,meteor
访问客户端标记集合,并且不显示任何数据。集合定义应该在客户端和服务器之间共享,而不是重复。
创建一个文件夹lib
并将集合定义放在那里
//lib/collections.js
Markers = new Mongo.Collection('markers')
删除server
和client
文件夹中的集合定义。
另外,请注意,当您使用分隔的mongo
实例时,反应性会非常缓慢(与嵌入式mongo
相比,反射速度为2或3倍)
答案 1 :(得分:0)
非常肯定这里有答案:
Using Multiple Mongodb Databases with Meteor.js
关于语法的注释,在1.2.1版中,您希望将Meteor集合声明为全局变量,以便可以在您键入的文件之外访问它。此外,您希望将此行放在/ lib或客户端和服务器都可以访问的目录中。
Markers = new Mongo.Collection('markers')