2017-02-04 7 views
1

mongooseを使ってmongodb接続を開き、テストコレクション内のすべてのレコードを返す比較的単純なNodeスクリプトがあります。別のモジュールにいると、なぜマングース接続がハングしますか?

何らかの理由で、mongoose.connectコールを別のモジュールに分割すると(複数のスクリプトで使用されるため)、スクリプトは機能しません。しかし、同じファイルでconnectを呼び出すとうまくいきます。

壊れたバージョン

connect.js

var mongoose = require("mongoose"); 
var config = require("./_config"); // holds different mongo URIs for dev/prod 

var mongoUrl = config.mongoURI[process.env.NODE_ENV]; 

mongoose.connect("mongodb://localhost/test"); 
var db = mongoose.connection; 
db.on("connected", function() { 
    console.log("Mongoose default connection open to " + mongoUrl); 
}); 

script.js

var mongoose = require("mongoose"); 
var Schema = mongoose.Schema; 
require("../server/connect"); 

var testSchema = new Schema({ 
    teststring: String 
}, { 
    timestamps: true 
}, { bufferCommands: false }); 

var Tester = mongoose.model("Tester", testSchema); 
Tester.find(function (err, result) { 
    console.log(result); 
}); 
// node script.js 
// Outputs "Mongoose default connection open to mongodb://localhost/test" 
// then hangs 

作業バージョン

script.js

var mongoose = require("mongoose"); 
var Schema = mongoose.Schema; 
var config = require("./_config"); 

var mongoUrl = config.mongoURI[process.env.NODE_ENV]; 

mongoose.connect(mongoUrl); 
var db = mongoose.connection; 
db.on("connected", function() { 
    console.log("Mongoose default connection open to " + mongoUrl); 
}); 

var testSchema = new Schema({ 
    teststring: String 
}, { 
    timestamps: true 
}, { bufferCommands: false }); 

var Tester = mongoose.model("Tester", testSchema); 
Tester.find(function (err, result) { 
    console.log(result); 
}); 

この1ファイルのバージョンが正常に動作し、結果を返します。あなたが見ることができるように、唯一の違いは1ファイル対2を使用しているようです。

私はここで何が欠けていますか?

答えて

0

あなたの './connect'モジュールから何かをエクスポートしようとしましたか?それ以外の場合、ノードには何も保持されず、接続はガベージコレクトされます。

最後の行としてこれを追加します。 module.exports = db

そして var mongoDb = require('./connect')

+0

うん、それで運がない。 – nrflaw

0

をインポートするときに、それを変数に割り当てるには、それを考え出した - /server/フォルダは、独自のnode_modulesフォルダを持っていたのでconnect.jsrequire("mongoose")ました実際にはスクリプトとは異なるインスタンスを含んでいます。読んでthe node module docs私はそれをすべて理解する助けに慎重に助けた。

関連する問題