2012-11-10 15 views
7

Jestem nowy w node.js i mongodb ... prosze o pomoc.Tworzenie schematu kolekcji w bazie danych mongolab mongodb z node.js

Próbuję utworzyć schemat dla kolekcji użytkownika w bazie danych mongolab mongodb z aplikacji node.js z poniższym kodem. Kod nie wydaje się być wadliwy (przynajmniej nie otrzymuję komunikatów o błędach), ale nie widzę żadnego wskazania, że ​​to się uda. To znaczy, kiedy idę na mongolab i patrzę na moją bazę danych, nie widzę, aby utworzono dowolny schemat - http://cl.ly/image/0f1y273m2i0X.

Czy ktoś może wyjaśnić, co robię źle, i jak mogę sprawdzić, czy mój kod się powiódł, a schemat został stworzony dla mojej kolekcji?

---- begin ----

// 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 CODE ----

Odpowiedz

8

należy włożyć dokument w pierwszej kolejności. Schematy nie są jednoznacznie zdefiniowane w mongodb. Po wstawieniu dokumentu kolekcja zostanie automatycznie utworzona, a zobaczysz ją w konsoli programu mongolab.

Przykład z 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'); 
}); 

po zapisać zadzwonić powyżej kolekcja zostanie utworzona

+0

Jak to zrobić? Co powinienem dodać/zmienić w powyższym kodzie? – RBR

+0

Musisz przejrzeć dokumentację interfejsu API mongoose. Istnieją również przykłady dotyczące przepełnienia stosu, np. http://stackoverflow.com/q/10520501/579461 –

+0

Przeczytałem dokument "Mongoose" i napisałem: "Model to klasa, z którą tworzymy dokumenty". co oznacza, że ​​model pojawia się przed dokumentem, ale do utworzenia modelu potrzebny jest schemat. Tak więc wydaje się, że kolejność: schemat -> model -> dokument. Wygląda na to, że zlecenie to dokument -> schemat -> model. Jestem zmieszany. – RBR

0

Danych w MongoDB posiada elastyczny schemat. Dokumenty z tego samego zbioru nie muszą mieć tego samego zestawu pól lub struktury, a wspólne pola w dokumentach kolekcji mogą zawierać różne typy danych.

Powiązane problemy