node.js - 我们可以在 Node JS 中使用单个 PUT 请求更新多条记录吗?
问题描述
我正在尝试使用 Angular HTTP 服务通过单个 put 请求更新多条记录,该服务又使用处理 PUT 请求的 Node JS Express API。但到目前为止,我在互联网上看到的示例指的是通过 put 请求更新单个记录。但相反,我想将一组对象传递给来自 Angular Http 服务的 Put 请求,它应该能够在 Node JS API 中读取该集合。到目前为止,我一直在传递一个对象作为请求的一部分,我可以通过“req.body.propertyname”读取它的属性。它可以读取我想要传递的整个数组吗?
假设这是我在 Angular 端通过 put 请求更新一本书的代码,如下所示:
updateBook(updatedBook: Book): Observable { return this.http.put( /api/books/${updatedBook.bookID}
, updatedBook, { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }); }
在 Node js 前端,它能够从客户端(Angular)端读取传递的 book 对象,如下所示:
.put(函数(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 { return this.http.put( /api/books
, updatedBooks, { headers: new HttpHeaders({ 'Content-Type': 'application/json' }) }); }
如果是,那么 Node JS 甚至如何读取从客户端传递的这个数组。req.body 会包含这个数组吗?
解决方案
我也是节点 js 的新手,但我尝试通过邮递员更新多个值,然后我点击了“/api/books”,下面的代码对我有用,并使用 PUT 调用一次更新了我的数据库中的所有值。使用 Mongo DB 和 Node JS
app.put('/api/books',(req,res)=>{
var updatedData="";
var headersAgain=false;
for(let i =0;i<req.body.length;i++){
DataBaseName.findByIdAndUpdate(req.body[i]._id)
.then(val=>{
val.url=req.body[i].title
val.position=req.body[i].author
val.auto_scroll=req.body[i].publicationYear
updatedData=val+updatedData
val.save((err,updatedObject)=>{
console.log('inside save.....',updatedData)
if(err){
return res.status(500).send(err)
}else{
if(!headersAgain==true){
headersAgain=true
return res.status(201).send(updatedData)
}
}
})
})
}
})
推荐阅读
- c# - 比较 2 个列表的 UnorderedEquals 方法在布尔值上失败
- linkedin - 我如何将我的域列入白名单以使用linkedin启用自动填充
- angular - 谷歌分析自定义指标不适用于 Angular 6
- python - 我正在尝试使用 Jupyter Notebook 在 Python 3.7.0 中显示图像。为什么它不起作用?
- react-native - 在反应本机中从 API 渲染数据时出现错误
- java - 来自单个事务定义的多个事务对象
- javascript - Vue.js:尽管有条件渲染,元素仍会显示片刻
- android - 如何保证mediacodec编码的视频分辨率与摄像机预览角度一致?
- javascript - 字符串包括:测试字符串数组中的单词
- python - 如何在模型中实现 t-SNE?