Pregunta

Actualizar : Has estado alguna vez. Pero en aquel entonces decidido no utilizar la mangosta. La razón principal es que no pudimos llegar a una gran razón para utilizar un ORM cuando se utiliza mongo y javascript.


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. Cualquier ayuda o conocimiento de lo que estoy haciendo mal?

¿Fue útil?

Solución

Es necesario 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'
    ],

    [...]
}));    

Otros consejos

Para Mongoose 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 );

    }

  });

});

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

Compilar con filename.js nodo buena suerte ..

Se debe definir sus índices únicos antes de ejecutar la aplicación por primera vez. De lo contrario, tiene que dejar su recogida y empezar de nuevo. Además, mangosta no generará un error cuando intenta guardar {nombre: 'usuario1'}. Cuando 'usuario1' ya existe

LearnBoost subido recientemente un conjunto de ejemplos https://github.com/LearnBoost/mongoose / árbol / maestro / ejemplos

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top