2015-09-25 5 views
0

У меня есть база данных Mongodb с объектами возобновления, как показано ниже. Я использую сервер node-express. И я запрашиваю базу данных mongo для получения объектов на основе определенного навыка. Например: если я запрашиваю для умения: jquery, возвращаются только объекты с этим умением. Проблема заключается в том, что функция get возвращает объекты из базы данных.Невозможно удалить объекты Retirove из Mongoose-Node

В выделенном коде: Если я непосредственно вставить объект как:

Resume.find({skills.jQuery : 2},function(err, results){...} 

я получить ожидаемые результаты.

Однако, если я вставляю его динамически (skillSet), то он не работает. Iit проверил значение для SKILLSET и это дает мне то, что я ожидал («skills.JQuery»)

var skillSet = ("'"+'skills.' + req.params.skill +"'"); 
console.log('skillSet',skillSet) //'skills.jQuery' 
Resume.find({skillSet : 2},function(err, results){ 

Ниже приведен фрагмент кода:

{ 
    "_id" : ObjectId("56031b4353b32084651173fb"), 
    "uuid" : "acd06792-87c3-4b0e-827a-8bd19d7f9c03", 
    "creationDate" : ISODate("2015-09-23T21:36:03.728Z"), 
    "status" : "3", 
    "name" : "resume_dev", 
    "__v" : 0, 
    "skills" : { 
     "node" : 2, 
     "react" : 2, 
     "React" : 3, 
     "JQUERY" : 2, 
     "JavaScript" : 15, 
     "JQuery" : 5, 
     "Backbone" : 3, 
     "Node" : 2, 
     "Angular" : 4, 
     "Javascript" : 2, 
     "jQuery" : 17, 
     "javascript" : 3 
    } 
} 

router.get('/skills/:skill', function(req, res){ 
    console.log("req.params.skill",req.params.skill); 
    var skillSet = ("'"+'skills.' + req.params.skill +"'"); 
    console.log('skillSet',skillSet) //skills.react 
    Resume.find({skillSet : 2},function(err, results){ 
     console.log('hi'); 
     console.log(skillSet) 
     console.log(results); 
     if (err) { 
      res.status(500).json(err); 
     } 
     else { 
      // console.log("====>",results); 
      res.status(200).json(results); 
      // res.render('status',{Resume: JSON.stringify(results)}); 
     } 
    }); 
}); 

ответ

1

Когда я правильно понимаю ваш вопрос, вы можете сделать что-то вроде этого:

var query = {}; 
query['skills.' + req.params.skill] = 2; 
Resume.find(query,function(err, results){ 
    // Do something with the callback 
}; 

EDIT:

Если вы хотите, чтобы все номера были больше или равны 1, вам понадобится $ gte. Вот docs. Это обновленный запрос:

var query = {}; 
query['skills.' + req.params.skill] = {$gte: 1}; 
Resume.find(query,function(err, results){ 
    // Do something with the callback 
}; 
+0

Это работает только с тем, что я пытаюсь запросить навык> = 1. В принципе, если умение доступно в объекте, я хочу вернуть объект. запрос [ «навыки». + req.params.skill]> = 1, похоже, не работает. –

+0

@javascriptnovice Я обновил свой ответ. –

+0

То, что я искал {$ gte: 1}. Благодаря тонну!! –

Смежные вопросы