我需要在Meteor中使用MongoDB驱动程序,因为我想在我的应用程序中使用Grid。在Meteor 0.6.5之前,我设法将一个mongodb作为一个包,它运行良好。
但是在更新之后,使用新的Package系统,我无法使其工作。这是我的package.js(在myAppFolder/packages/mongodb/
中),我也做了meteor add mongodb
Package.describe({
summary: "Mongodb driver"
});
Npm.depends({'mongodb': '1.3.18'});
Package.on_use(function(api){
MongoDB = Npm.require("mongodb");
console.log(MongoDB, '--------------');
api.export('MongoDB', 'server');
});
我可以看到控制台日志在我启动服务器时打印了一些东西,但是在运行时的应用程序代码中,MongoDB的值是未定义的,Package.mongodb.MongoDB
也是如此。在我看来,这些值以某种方式分配给未定义。
如果有人知道如何在mongo-livedata包中使用已包含的MongoDB驱动程序,那将是一个更好的解决方案。
答案 0 :(得分:1)
如果你在package.js
文件中这样做,我觉得它不起作用;看起来你必须使用一个单独的文件。我通过以下方式做了类似的事情来获取csv包:
package.js
:
Npm.depends({
csv: "0.3.5"
});
Package.on_use(function (api) {
api.add_files('server.js', 'server');
api.export('csv');
});
server.js
:
csv = Npm.require('csv');
这是Meteor 0.6.5+特定的。他们现在在文档中有一个部分:http://docs.meteor.com/#writingpackages
就像你说的那样,你应该能够Npm.require
Meteor已经使用的同一个mongodb包,并保存额外的npm安装。例如,mongo-livedata
包导出名为MongoInternals
的内容,您可以深入了解它并找出如何拔出mongo驱动程序:
https://github.com/meteor/meteor/blob/devel/packages/mongo-livedata/package.js