1

アプリケーションでGridを使用したいので、Meteor で MongoDB ドライバーを使用する必要があります。Meteor 0.6.5 より前は、mongodb をパッケージとして使用できましたが、問題なく動作していました。

しかし、更新後、新しいパッケージ システムでは動作しません。これが私の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。. これらの値はどういうわけか 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 インストールを保存できるはずです。たとえば、mongo-livedataパッケージは と呼ばれるものをエクスポートMongoInternalsします。これを掘り下げて、mongo ドライバーを引き出す方法を見つけることができる場合があります。

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

于 2013-08-16T00:14:58.077 に答える