从MongoDB删除对象

时间:2019-02-22 19:28:17

标签: mongodb express

当您按下删除按钮但API无法正常工作时,我想从数据库中删除目标文件。我在做什么错了?

app.post('/api/dArtikel', function (req, res) {
  db.artikel.remove( { "_id": id }, function (err, docs) {
    if (err) {
      res.send('Niet gevonden');
    }
    else {
      res.json(docs);
    }
  });
});

ReferenceError: id is not defined

我知道它说没有定义,但是我现在该怎么办?

1 个答案:

答案 0 :(得分:0)

首先,使用删除处理程序。其次,id必须来自某个地方。 Angular要么将其作为参数传递:

'/api/dArtikel/123'

或作为查询字符串值:

'/api/dArtikel?id=123'

无论哪种情况,您的处理程序都需要使用以下方法之一。这里使用一个参数:

app.delete('/api/dArtikel/:id', function (req, res) {
  db.artikel.remove({ "_id": req.params.id }, function (err) {
    if (err) {
      res.status(400).json(err);
    }
    else {
      res.sendStatus(204);
    }
  });
});

如果有错误,请返回。否则,不返回任何内容。如果出现错误,则没有必要将所有文档退回,因为您很可能已经在Angular的客户端上拥有了所有这些数据。

在Angular应用中,您可以从服务类中调用此方法:

import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';

@Injectable()
export class ArtikelService {

  constructor (
    private httpClient: HttpClient,
  )

  deleteArtikel(id: string): void {
    this.httpClient
        .delete(`your-service-url/api/dArtikel/${ id }`)
        .toPromise()
        .then(() => { // do something })
        .catch(() => { // do something else });
  }

}