Node.js 将请求放入restifyapi、NodeJS、MongoDB中

Node.js 将请求放入restifyapi、NodeJS、MongoDB中,node.js,mongodb,put,restify,Node.js,Mongodb,Put,Restify,我正在尝试为我的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) { i

我正在尝试为我的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'"
     }
{
“代码”:“内部错误”,
“消息”:“对象”没有方法“findById”
}

谢谢。

findById方法通过参数{u id:}在内部映射到find

您可以使用:

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

});

两者都是一回事。原因是当你写作的时候

 var query = Item.where({_id: req.params.item_id});
返回一个查询对象,无法对其调用findById方法。只能在项目模型上调用它


如果您尝试合并查询,我建议您在筛选器级别合并查询或使用聚合。

您收到了什么错误?@mfitzp我尝试使用POSTMAN客户端对其进行测试,结果出现以下错误{“code”:“InternalError”,“message”:“Object”没有方法“findById”}
findById
是一种猫鼬方便的方法。如果您使用的是本机
mongodb
驱动程序,那么您必须使用
find({u id:req.params.id})
谢谢,我将其更改为query.find,我得到了错误“item”未定义请查看更改。感谢您的回复,我更改了它,我收到了邮递员“code”上的错误:“InternalError”,“message”:”“未定义项目”'是否使用mongoose创建项目模型?如果是,是否使用require导入到文件中?
 var query = Item.where({_id: req.params.item_id});