0

Mongoose を使用して Mongo にレコードを挿入する次のコードがあります。

var mongoose = require('mongoose');
var config      = require ('config');


var db = mongoose.createConnection(config.database.address, config.database.dbName);
var strCollectionName = 'category';

var CategorySchema = new mongoose.Schema({
      categoryName          : {type: String, required: true , unique: true }, 
      categoryTag           : {type: String},
      categoryDescription   : {type: String},
      createDate             : {type: Date, default: Date.now}
});


var createCategory = function (objCategory)
{

        var Category = db.model(strCollectionName, CategorySchema );

        var objSchema = new Category(objCategory);
        objSchema.save(function (err)
        {
            if (err)
                console.log ("Error");
            else
                console.log ("Success !!");


        });


}

私はそれを機能させることができました。しかし、保存内で db.close () コマンドを発行しようとすると、エラーがスローされます。それ以外の場合は問題ありません。私の質問は、接続をまったく閉じる必要がないということですか? Mongoose は自動的に処理しますか? - 接続プールが制限を超えると、DB 全体がクラッシュするのではないかと心配しています。

4

1 に答える 1

1

これを適切に行うには:

モデルを定義し、同時にそれらについてMongooseに伝えます。接続を作成する前にこれを行うことができます。

以前は、スキーマを使用したいときにMongooseにスキーマについて正しく伝えていました。これを行う必要があるのは、スキーマ自体を作成するときに1回だけです。

次に、アプリケーション全体で機能するMongooseの接続を開くことができます(つまり、後で使用するには、次のようにする必要がありますrequire('mongoose'))。

var mongoose = require('mongoose');
var config   = require ('config');

var CategorySchema = new mongoose.Schema({
    categoryName          : {type: String, required: true , unique: true }, 
    categoryTag           : {type: String},
    categoryDescription   : {type: String},
    createDate            : {type: Date, default: Date.now}
});

mongoose.model('Category', CategorySchema);

mongoose.connect(config.database.address, config.database.dbName);

手動で接続を作成および管理する場合は、上記の例のように.createConnectionを使用できますが、何をしているのかわからない場合は、Mongooseのデフォルトの接続を使用することをお勧めします。

カテゴリを作成するには:

// if you're in a different file to where you created your CategorySchema, var these:
var mongoose = require('mongoose'),
    Category = mongoose.model("Category");

var createCategory = function (objCategory) {
    var newCategory = new Category(objCategory);
    newCategory.save(function (err) {
        if (err)
            console.log ("Error");
        else
            console.log ("Success !!");
    });
}
于 2012-10-21T07:36:12.843 に答える