2012-11-10 139 views
7

我是新來的node.js和mongodb ...請幫助。從node.js在mongolab mongodb數據庫中創建集合模式

我正在嘗試使用下面的代碼從node.js應用程序爲mongolab mongodb數據庫中的用戶集合創建架構。該代碼似乎沒有失敗(至少,我沒有得到任何錯誤信息),但我沒有看到任何跡象表明它是成功的。也就是說,當我去mongolab並查看我的數據庫時,我沒有看到任何模式創建 - http://cl.ly/image/0f1y273m2i0X

有人可以解釋我可能做錯了什麼,或者我可以如何驗證我的代碼是否成功,並且實際上爲我的集合創建了一個模式?

---- BEGIN CODE ----

// file: app.js 

var express = require('express'), 
    http = require('http'), 
    mongoose = require('mongoose'); 

var app = express(), 
    port = 3000; 

// Connect to database in the cloud (mongolab) 
mongoose.connect('mongodb://username:[email protected]:41344/stockmarket'); 

// Create a schema for User collection 
mongoose.connection.on('open', function() { 
    console.log(">>> Connected!"); 

    var UserSchema = new mongoose.Schema({ 
     username: {type: String, unique: true}, 
     password: String 
    }); 

    var UserModel = mongoose.model('User', UserSchema); 
}); 

app.get('/', function(req, res){ 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.end('Hello, World!\n'); 
}); 

http.createServer(app).listen(port, function(){ 
    console.log("Express server listening on port " + port + " ..."); 
}); 

----結束代碼----

回答

8

您必須先插入一個文件。模式沒有在mongodb中明確定義。插入文檔後,該集合將自動創建,您將在mongolab控制檯中看到它。

http://mongoosejs.com/

var mongoose = require('mongoose'); 
var db = mongoose.createConnection('localhost', 'test'); 

var schema = mongoose.Schema({ name: 'string' }); 
var Cat = db.model('Cat', schema); 

var kitty = new Cat({ name: 'Zildjian' }); 
kitty.save(function (err) { 
    if (err) // ... 
    console.log('meow'); 
}); 

實施例後的保存撥打以上集合將MongoDB中創建

+0

我該怎麼做?我應該在上面的代碼中添加/更改什麼? – RBR

+0

您必須查看mongoose API文檔。也有堆棧溢出的例子,例如。 http://stackoverflow.com/q/105205​​01/579461 –

+0

我讀過貓鼬的文檔,它說:「模型是我們構建文檔的類。」這意味着該模型出現在文檔之前,但您需要一個模式來創建模型。所以順序似乎是:模式 - >模型 - >文檔。聽起來像你說的順序是文檔 - >模式 - >模型。我很困惑。 – RBR

0

數據具有靈活的模式。同一集合中的文檔不需要具有相同的字段或結構集合,並且集合文檔中的公共字段可以包含不同類型的數據。