2016-12-14 161 views
0

我想在MongoDB中使用npm Mongoose和Robomongo作爲我的GUI創建一個數據庫。我遵循了http://mongoosejs.com/docs/index.html的MongoDB快速入門文檔,但該數據庫並未出現在Robomongo中。基本上,我只是想通過Node運行server.js文件時讓數據庫「出現」在Robomongo中。麻煩創建MongoDB的MongoDB數據庫

當我從MongoDB Quickstart Docs中輸入下面的代碼時,Robomongo中沒有創建/顯示任何數據庫。

var mongoose = require('mongoose'); 
mongoose.connect('mongodb://localhost/test'); 

var db = mongoose.connection; 
db.on('error', console.error.bind(console, 'connection error:')); 
db.once('open', function() { 
    // we're connected! 
}); 

var kittySchema = mongoose.Schema({ 
    name: String 
}); 

var Kitten = mongoose.model('Kitten', kittySchema); 

但是...... 當我在僱員id字段(如下圖)添加到架構,則數據庫會出現在Robomongo。 有人可以解釋這兩段代碼之間的區別嗎?爲什麼一個人工作,另一個不工作?

var kittySchema = mongoose.Schema({ 
    name: {type: String}, 
    employeeid:{ 
     type: Number, 
     unique: true, 
     required: true 

    } 
}); 

回答

1

這是因爲employeeid上有一個索引(從unique,至少 - 可能required也不能100%確定如何貓鼬手柄必填項)。 Mongoose將自動創建具有在其上定義的索引的集合。

否則,將在您「執行」某項操作後創建集合(例如創建一個Kitten並使用.save())。

+1

Omg你是對的工作!我使用了.save()函數,並最終在數據庫中使用name屬性創建了集合。它直到我保存下來纔出現。我認真地花了最後3個小時試圖弄清楚這一點。謝謝!! – mfkogan

+1

沒問題 - 這有點不直觀,但它也是mongodb處理它的方式。例如,當使用mongo命令行時,您可以切換到數據庫,並選擇該數據庫,但該數據庫在插入之前不會存在 - 儘管您已選擇該數據庫。在mongodb問題跟蹤器中有一些額外的閱讀(這裏是https://jira.mongodb.org/browse/SERVER-18313)(請參閱底部的註釋)。 – dvlsg