2012-11-10 10 views
7

私はnode.jsとmongodbを初めて使っています...助けてください。node.jsからmongolab mongodbデータベースにコレクションスキーマを作成する

以下のコードを使用して、node.jsアプリケーションからmongolab mongodbデータベースにUserコレクションのスキーマを作成しようとしています。コードは失敗していないようです(少なくとも、エラーメッセージは表示されません)。しかし、どちらも成功しているという表示はありません。つまり、モンゴラブに行ってデータベースを見ると、スキーマが作成されていないことがわかります - http://cl.ly/image/0f1y273m2i0X

私が間違っていることを説明する人、または自分のコードが成功し、実際に自分のコレクション用に作成されたスキーマを確認する方法を教えてもらえますか?

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

---- ENDコードをBEGIN ----

答えて

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

私はmongoose文書を読んで、それは言った:「モデルは私たちが文書を構築するクラスです。モデルがドキュメントの前に来ることを意味しますが、モデルを作成するにはスキーマが必要です。したがって、注文はスキーマ - >モデル - >文書のようです。あなたがドキュメント - >スキーマ - >モデルであると言っているように聞こえます。よくわかりません。 – RBR

0

データを作成された後は、柔軟なスキーマを持っています。同じコレクション内のドキュメントは同じフィールドまたは構造体のセットを持つ必要はなく、コレクションのドキュメント内の共通フィールドには異なるタイプのデータが格納される場合があります。

関連する問題