1

我需要在 Meteor 中使用 MongoDB 驱动程序,因为我想在我的应用程序中使用Grid。在 Meteor 0.6.5 之前,我设法将 mongodb 作为一个包,它运行良好。

但是更新后,使用新的包系统,我无法让它工作。这是我的 package.js (in 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. 在我看来,这些值以某种方式分配给 undefined 。

如果有人知道如何使用 mongo-livedata 包中已经包含的 MongoDB 驱动程序,那将是一个更好的解决方案。

4

1 回答 1

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 install。例如,这个mongo-livedata包导出了一个叫做 的东西MongoInternals,你也许可以深入研究它并找出如何拉出 mongo 驱动程序:

https://github.com/meteor/meteor/blob/devel/packages/mongo-livedata/package.js

于 2013-08-16T00:14:58.077 回答