mongoose - 按 id 删除元素

Cha*_*r08 2 mongoose mongodb node.js angular

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

服务器.js

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

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);
    }
Run Code Online (Sandbox Code Playgroud)

propertyDetail.component.ts

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

html中的按钮

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

Iva*_*vic 6

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

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

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

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

您可以在文档中找到更多信息。