当您按下删除按钮但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
我知道它说没有定义,但是我现在该怎么办?
答案 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 });
}
}