2010-09-14 10 views
9

Actualización: Ha pasado algún tiempo. Pero en ese momento decidí no usar Mongoose. La razón principal es que realmente no pudimos encontrar una buena razón para usar un ORM cuando usamos mongo y javascript.Buscando el ejemplo de "mundo hola" de Mongoose


que he estado tratando de crear una base de datos/modelo con Mangosta, que es básicamente una base de datos de usuario donde el nombre de usuario es único. Suena bastante simple, pero por alguna razón no he podido hacerlo.

Lo que tengo hasta ahora es la siguiente:

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() {});*/ 

Es simplemente no funciona. La base de datos se crea bien, pero el nombre de usuario no es único. ¿Alguna ayuda o conocimiento de lo que estoy haciendo mal?

Respuesta

13

Debe definir el esquema. Prueba esto: (

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

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

    [...] 
}));  
+2

Por qué ha llegado esto rechazada El usuario? estaba pasando un objeto Javascript estándar a mongoose.model, no a una instancia de Schema – evilcelery

+0

Acaba de levantarse votado @evilcelery ;-) – AmirHd

2

trate de darle camino correcto en la var = mangosta require ('mangosta'). Mangosta,

. Se trabajó para mí ..

#

mi código

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 el nodo filename.js buena suerte ..

1

Debe definir sus índices únicos antes de ejecutar su aplicación para la primera vez. De lo contrario, debe abandonar su colección y comenzar de nuevo. Además, mongoose no arrojará un error cuando intente guardar {name: 'user1'} cuando ya exista 'user1'.

5

Para Mangosta 2,7 (probado en el 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); 

    } 

    }); 

}); 
Cuestiones relacionadas