2015-02-23 3 views
0

Я пытаюсь написать запрос PUT для моего API. Я использую restify для создания API. Я продолжаю получать ошибки, не могли бы вы помочь?Запрос PUT в API редизайна, NodeJS, MongoDB

//PUT (Update) Items 

    app.put('/items/:item_id', function(req, res){ 

    var query = Item.where({_id: req.params.item_id}); 
    query.findById(req.params.id, function (err, items) { 
    item.name = req.body.name; 
    item.description = req.body.description; 
    item.url = req.body.url; 

    req.item.save(function (err) { 
     if (!err) { 
      console.log("updated"); 
     } else { 
      console.log(err); 
     } 
     res.send(204, item); 
    }); 
}); 

Я попытался тестирования с помощью Почтальон клиента, и я получаю эту ошибку

 { 
     "code": "InternalError", 
     "message": "Object #<Query> has no method 'findById'" 
    } 

Спасибо.

+1

Какие ошибки вы принимаете? – mfitzp

+0

@mfitzp Я попытался тестированием с помощью Почтальона клиента, и я получаю эту ошибку { «кода»: «InternalError», «сообщения»: «Объект # не имеют какую-либо методы" findById» } – Kokoliko

+0

' findById' является мангустом удобный способ. Если вы используете собственный драйвер 'mongodb', тогда вам придется использовать' find ({_ id: req.params.id}) ' – ZeMoon

ответ

0

Метод findById внутри карты, чтобы найти с параметром {_id:}

Вы можете использовать:

Item.find({_id: req.params.item_id}, function (err, items) { 

}); 

или

Item.findById(req.params.item_id, function (err, items) { 

}); 

И одно и то же. Причина в том, что когда вы пишете

var query = Item.where({_id: req.params.item_id}); 

Объект запроса возвращается, на которой метод findById нельзя назвать. Его можно вызвать только по модели Item.

Если вы пытаетесь объединить запросы, я бы предложил объединить их на уровне фильтра или использовать агрегацию.

+0

спасибо, я поменял его на query.find, и я получил ошибку« item »is не определено – Kokoliko

+0

См. изменение. – ZeMoon

+0

Спасибо за ваш ответ, я изменил его, и я получаю сообщение об ошибке POSTMAN '"code": "InternalError", "message": "item is not defined"' – Kokoliko

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