2012-08-28 30 views
0

我有下面的代碼來使用Mongoose在Mongo中插入記錄。在Mongoose中關閉數據庫

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()命令保存它拋出錯誤,否則它是好的。我的問題是我不應該關閉連接?貓鼬會自動照顧它嗎? - 我擔心如果連接池超出限制,那麼整個數據庫可能會崩潰。

+0

當你調用'db.close()'它扔了什麼錯誤?通常會讓'db'保持打開狀態,直到程序關閉。 – JohnnyHK

回答

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 !!"); 
    }); 
}