2010-09-14 15 views
9

Aktualizacja: Trochę czasu. Ale wtedy postanowił nie używać Mongoose. Głównym powodem jest to, że nie mogliśmy wymyślić dobrego powodu używania ORMa podczas używania mongo i javascript.Poszukuje mangusty "cześć świat" przykład


Próbowałem stworzyć bazę danych/model z Mongoose, która jest po prostu bazą danych użytkowników, gdzie nazwa użytkownika jest unikalna. Brzmi dość prosto, ale z jakiegoś powodu nie mogłem tego zrobić.

co mam do tej pory to:

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

To po prostu nie działa. Baza danych jest tworzona poprawnie, ale nazwa użytkownika nie jest unikalna. Każda pomoc lub wiedza na temat tego, co robię źle?

Odpowiedz

13

Musisz zdefiniować schemat. Spróbuj tego: (

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

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

    [...] 
}));  
+2

Dlaczego to się przegłosowana Użytkownik? przechodził standardowy obiekt JavaScript do pliku mongoose.model, a nie instancję Schema – evilcelery

+0

Po prostu awansowałem na @evilcelery ;-) – AmirHd

2

Spróbuj dając właściwą drogę w var Mongoose = require ('') mangusty. Mangusta,

. Pracował dla mnie ..

#

mój kod

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

skompilować go z węzłem filename.js powodzenia ..

1

Należy zdefiniować swoje unikatowe indeksy przed uruchomieniem aplikacji dla pierwszy raz. W przeciwnym razie musisz upuścić swoją kolekcję i zacząć od nowa. Ponadto, mangusta nie będzie zgłaszać błędu podczas próby zapisania {name: 'user1'}, gdy "user1" już istnieje.

5

Dla Mongoose 2,7 (testowane w węźle 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); 

    } 

    }); 

});