11

node.jsとmongodbは初めてです。

以下のコードを使用して、node.jsアプリからmongolabmongodbデータベースにUserコレクションのスキーマを作成しようとしています。コードは失敗していないようですが(少なくともエラーメッセージは表示されません)、成功しているという兆候も見られません。つまり、mongolabにアクセスしてデータベースを見ると、スキーマが作成されていないことがわかります-https://dzwonsemrish7.cloudfront.net/items/01263Y1c312s233V0R17/mongodb-schema.png?v= 7fdc20e3

誰かが私が間違っている可能性があること、または私のコードが成功し、スキーマが実際に私のコレクション用に作成されたことを確認する方法を説明できますか?

// 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:password@ds041344.mongolab.com: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 + " ...");
});
4

2 に答える 2

9

最初にドキュメントを挿入する必要があります。スキーマは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');
});

上記の保存呼び出しの後、コレクションが作成されます

于 2012-11-10T15:54:45.800 に答える
0

MongoDBのデータには、柔軟なスキーマがあります。同じコレクション内のドキュメントは、同じフィールドまたは構造のセットを持つ必要はありません。コレクションのドキュメント内の共通フィールドは、異なるタイプのデータを保持する場合があります。

于 2015-08-30T12:54:53.480 に答える