【问题标题】:Closing DB in Mongoose在 Mongoose 中关闭数据库
【发布时间】:2012-10-21 15:36:12
【问题描述】:

我有以下代码使用 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 !!");


        });


}

我设法使它工作。但是如果我尝试在 save 中发出 db.close () 命令,它会抛出错误,否则它很好。我的问题是我根本不需要关闭连接? Mongoose 会自动照顾它吗? - 我担心如果连接池超出限制,那么整个数据库可能会崩溃。

【问题讨论】:

  • 调用db.close()会抛出什么错误?在程序关闭之前,您通常会保持 db 处于打开状态。

标签: node.js mongodb mongoose


【解决方案1】:

要正确执行此操作:

定义您的模型并同时告诉 Mongoose。您可以在创建连接之前执行此操作。

您之前在想使用它的时候告诉 Mongoose 您的架构 - 您只需要在创建架构本身时执行一次。

然后,您可以为 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 !!");
    });
}

【讨论】:

    猜你喜欢
    • 2015-07-30
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 2011-01-14
    • 2015-11-26
    • 1970-01-01
    相关资源
    最近更新 更多