【问题标题】:mongoose - Delete element by idmongoose - 按 id 删除元素
【发布时间】:2018-06-17 12:24:27
【问题描述】:

我试图通过传递属性的 id 来删除特定的属性,但是,删除会删除数据库中的第一个属性,而不是特定的属性。

Server.js

app.delete('/deleteProperty/:id', function(req,res) {
  Property.findOneAndRemove(req.params.propertyId,req.body, function(err,data) {
      if(!err) {
        console.log("Deleted");
      }
  });
});

api.service.ts

deleteProperty(id:number) {
        return this.http.delete('http://localhost:3000/deleteProperty/'+id)
        .do(data => console.log('All: ' + JSON.stringify(data)))
        .catch(this.handleError);
    }

propertyDetail.component.ts

deleteProperty(id)
    {
        this.apiService.deleteProperty(id)
        .subscribe( res => {
           //        this._router.navigate(['/properties']);
        }, (err) => {
            console.log(err);
        }
        )
    }

html 中的按钮

<a style="float:right"  color="warn" mat-raised-button (click)="deleteProperty(property.propertyId)">Delete</a>

【问题讨论】:

    标签: node.js mongodb angular mongoose


    【解决方案1】:

    当您使用findOneAndRemove 时,您需要像这样包装第一个参数:

    Property.findOneAndRemove({_id: req.params.propertyId}, req.body, function(err,data)
    {
        if(!err){
            console.log("Deleted");
        }
    });
    

    如果您尝试方法findByIdAndRemove,那么您可以像以前一样调用它:

    Property.findByIdAndRemove(req.params.propertyId,req.body, function(err,data)
    {
        if(!err){
            console.log("Deleted");
        }
    });
    

    您可以在documentation找到更多信息。

    【讨论】:

    • 我快疯了,因为我有一个项目列表,每次单击选定的项目时,上面的项目都会被删除。我认为这是一个前端问题......我没有为查询指定字段,这返回了其他 ID。这个解决方案的细节终于解决了这个问题。
    猜你喜欢
    • 2021-12-25
    • 2014-04-24
    • 2018-11-13
    • 2023-03-24
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多