2012-11-10 12 views
7

Sono nuovo su node.js e mongodb ... per favore aiuto.Creazione di uno schema di raccolta in un database mongolab mongodb da node.js

Sto provando a creare uno schema per una raccolta di utenti in un database mongolab mongodb da un'app node.js con il seguente codice. Il codice non sembra fallire (almeno non ricevo messaggi di errore), ma non vedo alcuna indicazione che abbia successo. Cioè, quando vado a mongolab e guardo il mio database, non vedo che sia stato creato uno schema - http://cl.ly/image/0f1y273m2i0X.

Qualcuno può spiegare cosa potrei fare male, o come posso verificare che il mio codice sia riuscito e uno schema è stato, infatti, creato per la mia collezione?

---- ---- codice di inizio

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

risposta

8

È necessario inserire un documento prima. Gli schemi non sono definiti esplicitamente in mongodb. Una volta inserito un documento, la collezione verrà creata automaticamente e la vedrai nella console di mongolab.

Esempio da 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'); 
}); 

dopo il salvataggio chiamare sopra la collezione sarà creato

+0

Come posso fare? Cosa dovrei aggiungere/modificare nel codice sopra? – RBR

+0

È necessario rivedere la documentazione API mangusta. Ci sono anche esempi di overflow dello stack es. http://stackoverflow.com/q/10520501/579461 –

+0

Ho letto il documento mangusta e ho detto: "Un modello è una classe con la quale costruiamo i documenti". il che implica che il modello viene prima del documento, ma è necessario uno schema per creare un modello. Quindi l'ordine sembra essere: schema -> modello -> documento. Sembra che tu stia dicendo che l'ordine è documento -> schema -> modello. Non ho capito bene. – RBR

0

dati in MongoDB ha uno schema flessibile. I documenti nella stessa collezione non hanno bisogno di avere lo stesso set di campi o struttura, e i campi comuni nei documenti di una collezione possono contenere diversi tipi di dati.

Problemi correlati