4

私は、マングースが接続をどのように使用するかについて頭を悩ませようとしています。現時点で私は持っています:

// Datastore.js
var mongoose = require('mongoose'),
    conn = mongoose.createConnection();

...

conn.open(host, database, port, options, callback); // Opens connection


// Model.js
var mongoose = require('mongoose');
var Schema = new mongoose.Schema({...})
module.exports = exports = mongoose.model('MyModel', Schema);


// Controller.js
var mongoose = require('mongoose');
var MyModel = mongoose.model('MyModel'); // Retrieves the model ok

MyModel.find({}, function(err, docs){
   if(err){} //
   console.log(docs); // Does not work
});

ただし、これは機能しません...どういうわけか次のように接続を渡した場合にのみ機能します:

// Datastore.js
var mongoose = require('mongoose'),
    conn = mongoose.createConnection();

...

conn.open(host, database, port, options, callback); //

mongoose.set('db', conn);


// Controller.js
var mongoose = require('mongoose'),
    db = mongoose.get('db');

var MyModel = db.model('MyModel'); // Retrieve the model using the connection instance

MyModel.find({}, function(err, docs){
   if(err){} //
   console.log(docs); // Works
});

私はこれに間違った方法でアプローチしていると思います...最初のアプローチはうまくいくはずで、何か間違ったことをしていますか?

4

2 に答える 2

8

すべての mongoose 呼び出しで共有されているデフォルトの接続プールを開くのが最も簡単です。

// Datastore.js
var mongoose = require('mongoose'),
    db = mongoose.connect('localhost', 'dbname');

次に、他のすべてのファイルで、を使用してプールにアクセスしますmongoose.model(...)

于 2012-08-21T13:33:15.320 に答える
2

ドキュメントを見ると、次のように書かれています。

var mongoose = require('mongoose');
var db = mongoose.createConnection('localhost', 'test');

おそらく、接続の作成のために接続の詳細を入力する必要があります

var mongoose = require('mongoose'),
conn = mongoose.createConnection('localhost', 'test');
于 2012-08-21T11:51:01.540 に答える