В поисках мангуста "Привет, мир", пример - PullRequest
11 голосов
/ 14 сентября 2010

Обновление : прошло некоторое время. Но тогда решили не использовать мангуст. Основная причина в том, что мы не смогли придумать вескую причину использования ORM при использовании mongo и javascript.


Я пытался создать базу данных / модель с Mongoose, которая по сути является просто пользовательской базой данных, где имя пользователя уникально. Звучит достаточно просто, но по какой-то причине я не смог этого сделать.

То, что я до сих пор получил, это:

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

Это просто не работает. База данных создана нормально, но имя пользователя не уникально. Любая помощь или знание того, что я делаю неправильно?

Ответы [ 5 ]

15 голосов
/ 25 марта 2011

Вам необходимо определить схему. Попробуйте это: (

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

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

    [...]
}));    
6 голосов
/ 16 июля 2012

Для Mongoose 2.7 (протестировано в Node 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 );

    }

  });

});
3 голосов
/ 21 ноября 2010

Попробуйте указать правильный путь в var mongoose = require ('mongoose'). Mongoose,

. У меня это сработало ..

#

мой код

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

Скомпилируйте его с узлом filename.js удачи ..

1 голос
/ 23 апреля 2013

Learnboost недавно загрузил набор примеров https://github.com/LearnBoost/mongoose/tree/master/examples

1 голос
/ 25 января 2011

Вы должны определить свои уникальные индексы перед первым запуском приложения.В противном случае вам нужно отказаться от своей коллекции и начать все сначала.Кроме того, mongoose не выдаст ошибку при попытке сохранить {имя: 'user1'}, когда 'user1' уже существует.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...