2013-10-07 53 views
0

我只想知道當我設置貓鼬連接並定義了一些模型(以前在app.js或者wathever中添加了它們的適當需求),如果沒有存在,將在我運行時第一次自動創建node app.js?node.js + mongoose連接和創建問題

這種邏輯是否正確?

如果不是,我必須在我的mongoDB集合,模型等之前創建嗎?

我當時就想,一個自動創建蒙戈DB收集的,當我第一次運行app.js

謝謝! Michele Prandina

回答

1

模式(和模型)是數據模型的客戶端(node.js)表現形式。一些東西,比如你定義的索引,是在第一次使用時創建的(例如保存文檔)。幾乎所有其他事情都是延遲創建的,包括收藏。

如果您希望您的模型(及其相關模式)具有一致的行爲,那麼您需要確保它們在關聯數據庫的任何訪問之前加載。只要在使用之前創建/執行它們,放置它們並不重要。你可能例如:

app.js 

models\Cheese.js 
     \Cracker.js 

然後,在app.js

var Cheese = require('Cheese.js'); 
var Cracker = require('Cracker.js'); 

假設,當然,你導出的模型:

model.exports = mongoose.model('Cheese', 
         new mongoose.Schema({ 
          name: String, 
          color: String 
         }) 
       ); 
+0

所以,如果我想創建和從第一次執行mantain數據庫,我必須導出該數據庫中包含的模型? 實例: ' //連接到本地數據庫的mongodb變種 DB = mongoose.connect( '的mongodb://127.0.0.1:27017/test04'); ' 除非我導出以前創建的某些模型,否則不會創建分貝。 –

+0

正如我所說的,模型只是存儲在數據庫中的文檔的客戶端表現形式。如果你想使用Mongoose,那麼使用Models是訪問MongoDB的最佳方法。您不必「導出」它們,但只能定義一次。 – WiredPrairie