2010-09-14 6 views
9

Mise à jour: Été un certain temps. Mais à l'époque, a décidé de ne pas utiliser Mongoose. La raison principale étant que nous ne pouvions pas vraiment trouver une bonne raison d'utiliser un ORM en utilisant mongo et javascript.À la recherche de Mongoose "bonjour monde" exemple


que je suis en train de créer une base de données/modèle avec mangouste qui est fondamentalement juste une base de données utilisateur où le nom d'utilisateur est unique. Cela semble assez simple, mais pour une raison quelconque, j'ai été incapable de le faire.

Ce que j'ai jusqu'à présent est la suivante:

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

Il ne fonctionne tout simplement pas. La base de données est créée correctement, mais le nom d'utilisateur n'est pas unique. Toute aide ou connaissance de ce que je fais mal?

Répondre

13

Vous devez définir le schéma. Essayez ceci: (

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

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

    [...] 
}));  
+2

Pourquoi est-ce se voté contre l'utilisateur? passait un objet JavaScript standard dans mongoose.model, pas une instance de Schema – evilcelery

+0

Je viens de me lever voté @evilcelery ;-) – AmirHd

2

Essayez de donner droit chemin = var mangouste require ('mangouste'). Mongoose,

. Il a travaillé pour moi ..

#

mon code

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

Compile avec noeud filename.js bonne chance ..

1

Vous devez définir vos index uniques avant de lancer votre application pour la première fois. Sinon, vous devez déposer votre collection et recommencer. En outre, mongoose ne lancera pas d'erreur lorsque vous tenterez d'enregistrer {name: 'user1'} lorsque 'user1' existe déjà.

5

Pour Mongoose 2.7 (testé dans le nœud 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); 

    } 

    }); 

}); 
Questions connexes