猫鼬deleteOne,findOneAndDelete,findOneAndRemove无法正常工作

时间:2020-07-06 12:44:46

标签: javascript node.js mongoose

我尝试了以下代码(其他类似功能也是如此),它起初确实起作用,但后来却不起作用。有一个具有匹配ID的项目,它没有给出任何错误并可以执行,但是该文档并未从MongoDB中删除

CompanyModel.findOneAndDelete({ id: data.id }, function (err, doc) {
  if (err) {
    console.error(err);
  }
});

3 个答案:

答案 0 :(得分:0)

您需要在过滤器中提供_id:data.id。 例如。

CompanyModel.findOneAndDelete({ _id: data.id }, function (err, doc) { 
    //code here 
}

答案 1 :(得分:0)

mongo id为_id,比较值应转换为ObjectId:

// import { ObjectId } from 'bson';

{_id: new ObjectId(id)}

如果您不想使用_id,则必须确保id字段存在并且包含值(具有正确的类型)。否则请求似乎很好。

答案 2 :(得分:0)

发布问题后不久,我发现了它。问题是,我正在运行一个测试,其中在socket-io客户端中一个接一个地创建文档并删除文档,但是我使用过“ process.nextTick”功能将模型保存在服务器端,而不是用于删除。因此删除是在创建之前发生的。我希望这种情况会产生错误,但是如果找不到项目,它不会给出任何错误。

我很困惑,因为我发现不再支持Model.deleteOne Mongoose.js - TypeError: Model.deleteOne is not a function