我正在开发一个小的MEAN应用程序,当我尝试删除或更新记录时,我遇到了问题。
book.component.ts
deleteBook(id) {
this.api.deleteBook(id)
.subscribe(res => {
this.router.navigate(['/books']);
}, (err) => {
console.log(err);
}
);
}
api.service.ts
deleteBook(id: string): Observable<{}> {
return this.http.delete(`${apiUrl}/${id}`, httpOptions)
.pipe(
catchError(this.handleError)
);
}
这是ExpressJS和Angular命令行的输出:
[1] [HPM] Rewriting path from "/api/5b0e61859a51ca1cc05ef819" to "http://localhost:3000/api/5b0e61859a51ca1cc05ef819"
[0] DELETE /api/5b0e61859a51ca1cc05ef819 500 0.180 ms - -
[1] [HPM] DELETE /api/5b0e61859a51ca1cc05ef819 ~> http://localhost:3000
在浏览器控制台中得到这个:
后端返回代码500,正文为:null
这是我的/routes/book.js删除功能:
router.delete(':/id', function(req, res, next) {
Book.findByIdAndRemove(req.params.id, req.body, function (err, post) {
if (err) return next (err);
res.json(post);
})
})
所以看起来id正确地传递给后端,但看起来req在book route中是空的?
是否可以记录ExpressJS方面发生的事情?
答案 0 :(得分:0)
您可以使用记录器,例如morgan
。
将依赖项npm i morgan
添加到您的服务器,然后将morgan添加为中间件:
var morgan = require('morgan');
// Standard Apache combined log output
app.use(morgan('combined'));
您可能想要使用的另一个记录器是winston
。
或者在所有其他路线之前添加:
// Only in development
if (process.env.NODE_ENV === 'development') {
app.use((req, res, next) => {
console.log(req);
next();
}
}
编辑:您使用body-parser
吗?