【问题标题】:PUT request in Restify API, NodeJS, MongoDBRestify API、NodeJS、MongoDB 中的 PUT 请求
【发布时间】:2015-02-23 12:45:44
【问题描述】:

我正在尝试为我的 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'"
     }

谢谢。

【问题讨论】:

  • 您收到什么错误?
  • @mfitzp 我尝试使用 POSTMAN 客户端对其进行测试,但出现此错误 { "code": "InternalError", "message": "Object # has no method 'findById'" }
  • findById 是一种猫鼬便捷方法。如果您使用的是原生 mongodb 驱动程序,那么您将不得不使用 find({_id:req.params.id})

标签: node.js mongodb put restify


【解决方案1】:

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 模型上调用。

如果您尝试合并查询,我建议您在过滤级别合并它们或使用聚合。

【讨论】:

  • 谢谢你,我把它改成了 query.find,我得到了错误 'item' is not defined
  • 请查看更改。
  • 感谢您的回复,我更改了它,我在 POSTMAN '"code": "InternalError", "message": "item is not defined"' 上收到错误
  • 您是否使用猫鼬创建了项目模型?如果是,您是否使用 require 导入了文件?
猜你喜欢
  • 2020-06-22
  • 1970-01-01
  • 2022-08-19
  • 2017-11-18
  • 2017-02-19
  • 1970-01-01
  • 2020-10-27
  • 1970-01-01
  • 2023-03-08
相关资源
最近更新 更多