.findByIdAndRemove不是一个函数

时间:2018-09-02 23:47:00

标签: node.js mongodb mongoose

考虑以下代码:

app.delete('/customer/:id',(req,res) =>{
    
    var idRemove = String(req.params.id);
    console.log(idRemove);//this part is working 
    var user = new Customers(req.body);
             console.log(user)//this part is working 

            user.findByIdAndRemove({id :idRemove},(err, doc) => {
                if (!err)
                    res.status(200).send(doc);
                else {
                    res.status(500).send(err)
//showing error here telling me that user.findByIdAndRemove is not a function
                }

            })

});

我收到一条错误消息,指出“ .findByIdAndRemove不是函数。”

如何防止此错误?

2 个答案:

答案 0 :(得分:0)

查看文档https://mongoosejs.com/docs/api.html

findByIdAndRemove不在原型上,我认为这意味着他们打算让您直接访问模型:

例如

const Example = mongoose.model('Example',
  new mongoose.Schema({
    description: String
  })
);

Example.findByIdAndRemove({}, (err, doc) => {})

这是有道理的,因为使用特定的DTO实例访问/修改另一个实例会有些尴尬。

答案 1 :(得分:0)

在mongoDB中,_id是数据库中特定项目的ID的保留关键字。我相信您应该在代码中将id_id更改为user.findByIdAndRemove({_id :idRemove},(err, doc) => 。例如:

#include<stdio.h>
int main(int argc, char *argv[]) {
    int num,dummy;
    for (int i=argc-1;i;i--){
        if (sscanf(argv[i], "%d%c", &num, &dummy) == 1) {
            printf("Got a integer -> %d\n",num);
        } else {
         printf("Got garble\n");
        }
    }
 return 0;
}