2012-11-10 18 views
7

Tôi mới sử dụng node.js và mongodb ... vui lòng trợ giúp.Tạo lược đồ bộ sưu tập trong cơ sở dữ liệu mongolab mongodb từ node.js

Tôi đang cố gắng tạo giản đồ cho bộ sưu tập Người dùng trong cơ sở dữ liệu mongolab mongodb từ ứng dụng node.js bằng mã bên dưới. Mã này dường như không bị lỗi (ít nhất, tôi không nhận được thông báo lỗi), nhưng tôi không thấy bất kỳ dấu hiệu nào cho thấy nó đang thành công. Đó là, khi tôi đi đến mongolab và nhìn vào cơ sở dữ liệu của tôi, tôi không thấy rằng bất kỳ lược đồ đã được tạo ra - http://cl.ly/image/0f1y273m2i0X.

Ai đó có thể giải thích những gì tôi có thể làm sai hoặc cách tôi có thể xác minh rằng mã của tôi đã thành công và trên thực tế, tạo ra cho bộ sưu tập của tôi?

---- BEGIN MÃ ----

// 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 MÃ ----

Trả lời

8

Bạn phải chèn một tài liệu đầu tiên. Các lược đồ không được định nghĩa rõ ràng trong mongodb. Khi bạn chèn một tài liệu, bộ sưu tập sẽ tự động được tạo và bạn sẽ thấy nó trong bảng điều khiển mongolab.

Ví dụ từ 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'); 
}); 

sau khi tiết kiệm gọi trên bộ sưu tập sẽ được tạo ra

+0

Làm cách nào để thực hiện việc này? Tôi nên thêm/thay đổi mã nào ở trên? – RBR

+0

Bạn phải xem lại tài liệu API mongoose. Ngoài ra còn có các ví dụ xung quanh tràn ngăn xếp ví dụ. http://stackoverflow.com/q/10520501/579461 –

+0

Tôi đã đọc tài liệu mongoose, và nó nói: "Một mô hình là một lớp mà chúng tôi xây dựng tài liệu." ngụ ý rằng mô hình xuất hiện trước tài liệu, nhưng bạn cần một lược đồ để tạo một mô hình. Vì vậy, thứ tự có vẻ là: schema -> model -> document. Có vẻ như bạn đang nói thứ tự là tài liệu -> lược đồ -> mô hình. Tôi bối rối. – RBR

0

dữ liệu trong MongoDB có một sơ đồ linh hoạt. Tài liệu trong cùng một bộ sưu tập không cần phải có cùng một tập hợp các trường hoặc cấu trúc và các trường phổ biến trong tài liệu của bộ sưu tập có thể chứa các loại dữ liệu khác nhau.