我正在尝试为我的API写一个PUT请求。我正在使用restify来构建API。 我一直在收到错误,请你帮忙吗?
//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);
});
});
我尝试使用POSTMAN客户端测试它,我收到此错误
{
"code": "InternalError",
"message": "Object #<Query> has no method 'findById'"
}
感谢。
答案 0 :(得分: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模型上调用。
如果您尝试合并查询,我建议在过滤级别组合它们或使用聚合。