【发布时间】:2019-05-20 03:47:00
【问题描述】:
我正在尝试使用 Angular HTTP 服务通过单个 put 请求更新多条记录,该服务又使用处理 PUT 请求的 Node JS Express API。但到目前为止,我在互联网上看到的示例是指通过 put 请求更新单个记录。但相反,我想将一组对象传递给来自 Angular Http 服务的 Put 请求,它应该能够在 Node JS API 中读取该集合。到目前为止,我一直在传递一个对象作为请求的一部分,我可以通过“req.body.propertyname”读取它的属性。它可以读取我要传递的整个数组吗?
假设这是我在 Angular 端通过 put 请求更新一本书的代码,如下所示:
updateBook(updatedBook: Book): Observable {
返回 this.http.put(/api/books/${updatedBook.bookID}, updatedBook, {
标头:新的 HttpHeaders({
“内容类型”:“应用程序/json”
})
});
}
在 Node js 前端,它能够从客户端(Angular)端读取传递的书籍对象,如下所示:
.put(function(req, res) {
var data = getBookData();
var matchingBooks = data.filter(function(item) {
return item.bookID == req.params.id;
});
if(matchingBooks.length === 0) {
res.sendStatus(404);
} else {
var bookToUpdate = matchingBooks[0];
bookToUpdate.title = req.body.title;
bookToUpdate.author = req.body.author;
bookToUpdate.publicationYear = req.body.publicationYear;
saveBookData(data);
res.sendStatus(204);
}
});
我的问题是我是否可以一次传递书籍集合,以便通过一个请求来更新所有书籍?
updateBook(updatedBooks: Book[]): Observable {
返回 this.http.put(/api/books, updatedBooks, {
标头:新的 HttpHeaders({
“内容类型”:“应用程序/json”
})
});
}
如果是,那么 Node JS 甚至如何读取从客户端传递的这个数组。 req.body 是否包含传递的这个数组?
【问题讨论】:
-
嗯.. PUT 基本上是 POST 的一种形式。所以是的,您可以发送数据(例如对象数组)。对 NodeJS 没有太多经验,但是是的,NodeJS 应该在正文中以 JSON 形式接收数据。所以你需要从正文中提取数据。你也可以用 POST 来做,它仍然在正文中。
标签: node.js angular http service