15

mongoosejsでのモデルの使用法に少し混乱しています

モデルは、これらの方法でマングースを使用して作成できます

マングースの使用

var mongoose = require('mongoose');
var Actor = mongoose.model('Actor', new Schema({ name: String }));

接続の使用

var mongoose = require('mongoose');
var db = mongoose.createConnection(..);
db.model('Venue', new Schema(..));
var Ticket = db.model('Ticket', new Schema(..));
var Venue = db.model('Venue');

既存のモデル インスタンスの使用

var doc = new Tank;
doc.model('User').findById(id, callback);

Mongoose.modelConnection.modelによって返されるモデルの違いは何ですかModel.model。いつ何を使用するか、モデルを作成/取得するための推奨される方法は何ですか?

4

3 に答える 3

21
  1. mongoose.model定義されたモデルを、 を呼び出して作成されたデフォルトの接続に結び付けますmongoose.connect
  2. db.modelを呼び出して作成された接続にモデルを結び付けvar db = mongoose.createConnectionます。
  3. doc.modelのモデルが関連付けられている接続を使用して、別のモデルを名前で検索しdocます。

3 つすべてを同じプログラムで適切に使用できます。どちらを使用するかは、状況によって異なります。

于 2012-10-09T19:33:30.670 に答える
15

ここに私が見つけたものがあります

重要!mongoose.createConnection() を使用して別の接続を開いたが、mongoose.model('ModelName') を介してモデルにアクセスしようとすると、アクティブなデータベース接続に接続されていないため、期待どおりに機能しません。この場合、作成した接続を介してモデルにアクセスします。

var conn = mongoose.createConnection('your connection string');
var MyModel = conn.model('ModelName', schema);
var m = new MyModel;
m.save() // works

var conn = mongoose.createConnection('your connection string');
var MyModel = mongoose.model('ModelName', schema);
var m = new MyModel;
m.save() // does not work b/c the default connection object was never connected
于 2012-10-13T23:36:19.993 に答える