2014-12-14 2 views
1

У меня есть следующий код для обновления документа в поле подмножества, и я получаю исключение, за которым следует код.findAndModify() предоставление исключения в mongoose

router.route('/user/:_id/host/:_id/accept/').post(function(req, res) { 
    Host.findAndModify({ 
     "query" : { 
      "_id" : req.body.eventid, 
      "joinees" : { 
       "$elemMatch" : { 
        "userid" : req.body.userid 
       } 
      } 
     }, 
     "update" : { 
      "$set" : { 
       "joinees.$.status_code" : 1 
      }, 
     }, 
     "new" : true, 
     "upsert" : false 
    }, function(err, host) { 
     if (err) { 
      console.log(err); 
      res.json(err); 
     } else { 
      console.log("kanishka"); 
      res.json(host); 

     } 
    }); 
}); 

Исключение печататься в консоли приводится ниже:

TypeError: undefined is not a function 
    at Object.handle (/node/Playo1/server1.js:332:7) 
    at next_layer (/node/Playo1/node_modules/express/lib/router/route.js:103:13) 
    at Route.dispatch (/node/Playo1/node_modules/express/lib/router/route.js:107:5) 
    at /node/Playo1/node_modules/express/lib/router/index.js:195:24 
    at param (/node/Playo1/node_modules/express/lib/router/index.js:268:14) 
    at param (/node/Playo1/node_modules/express/lib/router/index.js:280:16) 
    at param (/node/Playo1/node_modules/express/lib/router/index.js:280:16) 
    at Function.proto.process_params (/node/Playo1/node_modules/express/lib/router/index.js:296:3) 
    at next (/node/Playo1/node_modules/express/lib/router/index.js:189:19) 
    at next (/node/Playo1/node_modules/express/lib/router/index.js:166:38) 
+0

'.findAndModify()' не является методом моделей мангуста. См. ['.findOneAndUpdate()'] (http://mongoosejs.com/docs/api.html#model_Model.findOneAndUpdate) или ['.findByIdAndUpdate()'] (http://mongoosejs.com/docs/api. html # model_Model.findByIdAndUpdate), которые являются оболочками специального назначения для метода базового драйвера. –

+0

@NeilLunn: Спасибо, Бадди ... Это сработало ... –

ответ

4

Попробуйте это. Это сработает.

router.route('/user/:_id/host/:_id/accept/') 
.post(function(req, res) { 

     Host.findOneAndUpdate({ 
       "_id" : req.body.eventid, 
       "joinees" : { 
         "$elemMatch" : { 
           "userid" : req.body.userid 
         } 
       } 
     }, { 
       "$set" : { 
         "joinees.$.status_code" : 1 
       } 
     }, { 
       "new" : true, 
       "upsert" : false 
     }, function(err, host) { 
       if (err) { 
         console.log(err); 
         res.json(err); 
       } else { 
         res.json({ 
           message : "request Accepted", 
           requestStatus : 1 
         }); 
       } 
     }); 
}); 
+0

Я пробую это. Большое спасибо. –

+0

не работает для меня, такая же ошибка 'TypeError: Collections.findOneAndUpdate не является функцией' – adi

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