2010-09-14 6 views
9

Aggiornamento: stato un po 'di tempo. Ma all'epoca decisi di non usare Mongoose. La ragione principale è che non siamo riusciti a trovare un buon motivo per utilizzare un ORM quando si utilizza mongo e javascript.In cerca di Mongoose "ciao mondo" esempio


Ho cercato di creare un database/modello con Mongoose che è fondamentalmente solo un database utente in cui il nome utente è unico. Sembra abbastanza semplice, ma per qualche motivo non sono stato in grado di farlo.

Quello che ho finora è questo:

var mongoose = require('mongoose').Mongoose, 
    db = mongoose.connect('mongodb://localhost/db'); 

mongoose.model('User', { 
    properties: [ 
     'name', 
     'age' 
    ], 

    cast: { 
     name: String, 
     age: Number 
    }, 

    //indexes: [[{name:1}, {unique:true}]], 
    indexes: [ 
     'name' 
    ] 
    /*, 
    setters: {}, 
    getters: {}, 
    methods: {} 
    */ 
});  

var User = db.model('User'); 

var u = new User(); 
u.name = 'Foo'; 

u.save(function() { 
    User.find().all(function(arr) { 
     console.log(arr); 
     console.log('length='+arr.length); 
    }); 
}); 
/*User.remove({}, function() {});*/ 

E 'semplicemente non funziona. Il database è stato creato bene, ma il nome utente non è univoco. Qualche aiuto o conoscenza di ciò che sto facendo male?

risposta

13

È necessario definire lo schema. Prova questo: (

var mongoose = require('mongoose').Mongoose, 
db = mongoose.connect('mongodb://localhost/db'), 
Schema = mongoose.Schema; 

mongoose.model('User', new Schema({ 
    properties: [ 
     'name', 
     'age' 
    ], 

    [...] 
}));  
+2

Perché questo ottenere bocciato l'utente? stava passando un oggetto Javascript standard in mongoose.model, non un'istanza di Schema – evilcelery

+0

Mi sono appena alzato votato @evilcelery ;-) – AmirHd

2

provare a dare strada giusta nella var = mangusta require ('mangusta'). Mongoose,

. Ha funzionato per me ..

#

mio codice

require.paths.unshift("/home/LearnBoost-mongoose-45a591d/mongoose"); 
var mongoose = require('mongoose').Mongoose; 


var db = mongoose.connect('mongodb://localhost/db'); 


mongoose.model('User', { 
      properties: ['first name', 'last name', 'age', 'marriage_status', 'details', 'remark'], 


}); 

var User = db.model('User'); 
var record = new User(); 

record.first name = 'xxx'; 
record.last name = 'xxx'; 
record.age = 'xxx'; 
record.marriage_status = 'xxx'; 
record.details = 'xxx'; 
record.remarks = 'xxx'; 

record.save(function() { 
User.find().all(function(arr) { 

    console.log(arr); 
    console.log('length='+arr.length); 



}); 

}); 


//User.remove({}, function() {}); 

compilarlo con il nodo filename.js buona fortuna ..

1

Si dovrebbe definire indici univoci prima di eseguire la vostra applicazione per la prima volta. Altrimenti, devi lasciare la tua raccolta e ricominciare da capo. Inoltre, la mangusta non genera un errore quando si tenta di salvare {name: 'user1'} quando 'user1' esiste già.

5

Per Mongoose 2.7 (testato in Nodo v 0.8):.

var mongoose = require('mongoose'), 
    Schema = mongoose.Schema; 

var db = mongoose.connect('mongodb://localhost/db'); 

var User = new Schema({ 
    first_name: String, 
    last_name: String 
}); 

var UserModel = mongoose.model('User', User); 

var record = new UserModel(); 

record.first_name = 'hello'; 
record.last_name = 'world'; 

record.save(function (err) { 

    UserModel.find({}, function(err, users) { 

    for (var i=0, counter=users.length; i < counter; i++) { 

     var user = users[i]; 

     console.log("User => _id: " + user._id + ", first_name: " + user.first_name + ", last_name: " + user.last_name); 

    } 

    }); 

});