mongoose - 按ID删除元素

时间:2018-01-08 13:53:41

标签: node.js mongodb angular mongoose

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

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>

1 个答案:

答案 0 :(得分:2)

当您使用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找到更多信息。