Как мне выполнить запрос в Mongoose?

#javascript #mongodb #node.js #mongoose

#javascript #mongodb #node.js #mongoose

Вопрос:

 > db.users.findOne();
{
    "_id" : ObjectId("4db8ebb4c693ec0363000001"),
    "fb" : {
        "name" : {
            "last" : "Sss",
            "first" : "Fss",
            "full" : "Fss"
        },
        "updatedTime" : "2011-04-27T09:51:01 0000",
        "verified" : true,
        "locale" : "en_US",
        "timezone" : "-7",
        "email" : "abc@gmail.com",
        "gender" : "male",
        "alias" : "abc",

        "id" : "17447214"
    }
}
  

Итак, это мой объект Mongo. Теперь я хочу найти его через Mongoose:

 User.findOne( { gender: "male" }, function(err, docs){
    console.log(err);  //returns Null
    console.log(docs);  //returns Null.
});
  

Это не работает! Это также не:

 User.findOne( { fb: {gender:"male"} }, function...
  

Нуль, нуль.

Это вся моя фишка:

 app.get('/:uid',function(req,res){
    params = {}
    User.findOne({ $where : "this.fb.gender == 'male' " }, function(err, docs){
        console.log(docs);
    });
    res.render('user', { locals:params });
});
  

Комментарии:

1. Где User определено?

Ответ №1:

Я один из авторов mongoose. Вы можете выполнить этот запрос одним из нескольких способов:

  • find синтаксис

     User.findOne({'fb.gender': 'male'}, callback);
      
  • where синтаксис

     User.where('fb.gender', 'male').findOne(callback);
      
  • синтаксис именованной области

     UserSchema.namedscope('male').where('fb.gender', 'male');
    // ...
    var User = mongoose.model('User', UserSchema);
    
    // Now you can write queries even more succinctly and idiomatically
    User.male.findOne(callback);
      

Комментарии:

1. namedScope был удален из Mongoose, но я создал плагин, который имитирует его: github.com/gberger/mongoose-named-scopes

Ответ №2:

Попробуйте это :

 User.findOne( { $where : "this.fb.gender == 'male' " } )
  

или

 User.findOne( { fb.gender : "male" } )
  

Комментарии:

1. Спасибо! Вы знаете, почему я получаю эту ошибку при ее запуске? : DEBUG: ошибка типа: не удается прочитать свойство ‘auth’ undefined на HTTPServer.<анонимный>

2. понятия не имею, я вообще не использовал NodeJS, я задал запрос на основе моего опыта работы с mongodb javascript.

3. Это действительно отвечает на вопрос о запросе по fb.gender. TIMEX вроде как задал другой вопрос в своем комментарии.