node.js - 删除项目后刷新列表
问题描述
我得到了从服务器删除文件的简单功能。
deletePhoto(e) {
if (window.confirm('Do you really need delete this file?')) {
this.uploadService.deleteFile(e)
.subscribe(res => {
this.fetchFiles();
});
}
}
服务看起来像
deleteFile(filename): Observable<any> {
return this.http.delete(`http://localhost:8080/api/files/all/${filename}`)
}
和函数 fetch 看起来像
fetchFiles() {
this.fileUploads = this.uploadService.getOneFile(this.filename);
}
在我的后端里面
exports.deleteFile = (req, res) => {
fs.unlink((uploadFolder + '_files/') + req.params.filename, (err) => {
if (err) {
console.log("failed to delete local image:" + err);
} else {
console.log('successfully deleted local image');
}
});
}
删除工作正常,但删除我的列表后不刷新。
“列表”是简单的表
<tr *ngFor="let file of fileUploads | async | filter: name | paginate: { itemsPerPage: 10,
currentPage: p }; let i = index">
<td id="lPart" style="cursor: pointer; font-weight: normal;">
<a href="http://localhost:8080/api/file/{{file}}">{{file}}</a></td>
<td class="text-right" id="action">
<button class="btn btn-sm btn-danger" (click)="deletePhoto(file)">Delete</button>
</td>
</tr>
我想刷新此表而不重新加载页面。
解决方案
我建议您在删除后不要获取文件。如果您的目的是拥有一个包含用户和用户的应用程序,那么对 API 的任何获取都是耗时的,因此获取更少意味着更快。
首先,为了确保您的 API 有响应,您需要更改您的发送方法,如下所示
exports.deleteFile = (req, res) => {
fs.unlink((uploadFolder + '_files/') + req.params.filename, (err) => {
if (err) {
console.log("failed to delete local image:" + err);
res.json({"message":"fail","code":500}) // this is an exemple, but you need to have at least res.json({})
} else {
console.log('successfully deleted local image');
res.json({"message":"success","code":200}) // same here
}
});
}
将文件发送到后端后,只需从列表中拼接文件,如下所示
deletePhoto(e){
if (window.confirm('Do you really need delete this file?')) {
this.uploadService.deleteFile(e)
.subscribe(res => {
this.fileUploads.splice(this.fileUploads.indexOf(filename),1)
});
}
}
但问题是你的fileUploads
是Observable
,所以可以做的就是这个
fetchFiles() {
this.uploadService.getOneFile(this.filename).subscribe((val)=>{
this.fileUploads = val
}
}
这样,您将在fileUploads
变量中拥有列表,但随后需要对模板进行最终更改,您需要删除管道async
推荐阅读
- parsing - 具有变形的 Haskell monadic 解析器
- javascript - 动态表中的角度字典键值
- udp - 在 gns3 模拟器中使用 Iperf3 测试 udp 吞吐量时出现巨大的数据包丢失
- javascript - reactjs useState 和 useEffect 钩子在数组数据更改后不会重新渲染通过 websocket 接收的数据
- vbscript - VBSCRIPT“对象不支持此属性或方法'document;”
- hive - 在 HIVE 外部表中添加特定分区下的所有子分区
- istio - 如果在入口网关应用请求身份验证,则不会转发授权标头
- python - 我想用matplotlib在python中制作累积图
- python - 如何删除具有以下条件的元素 for 循环?
- json - 如何使赛普拉斯中的存根响应与现实保持同步?