node.js - 尽管视图初始化,但有时仍显示已删除的项目 - Vue,Node.js
问题描述
我在 Vue.js、Node.js 和 MongoDB 中创建应用程序。我有一个项目列表,每个项目旁边都有删除按钮。通常它可以工作,但是一次,例如 20 次删除,被删除的项目保留在列表中,尽管列表在每次删除后初始化。手动刷新页面后,删除的项目消失了。如何解决?
Vue组件:
methods: {
async initialize() {
return Service.getTool()
.then((response) => {
this.tools = response;
})
.catch((error) => {
this.handleError(error, this.errors);
})
.finally(() => {
});
},
async deleteItem(id) {
await Service.deleteTool(id);
await this.initialize();
},
}
服务:
static async getTool() {
const res = await api.get('tool/get')
try {
return res.data;
} catch (err) {
return err;
}
}
static deleteTool(id) {
return api.delete(`${'delete'}/${id}`);
}
后端:
router.delete('/delete/:id', (req, res) => {
Tool.deleteOne({ _id: req.params.id }, function (err) {
if (!err) {
return res.json('Item has been deleted');
}
else {
res.status(500).send(err);
}
});
})
解决方案
该项目在报告时未被删除:
tool.remove();
return res.json('Item has been deleted');
当有许多项目要处理时会出现问题,这意味着需要足够长的时间才能显示竞争条件。
基于回调的 API 对于所有主要库都已过时。它应该通过承诺来实现:
try {
const tool = await Tool.findOne({ _id: req.params.id });
...
await tool.remove();
return res.json('Item has been deleted');
推荐阅读
- javascript - 根据位置javascript更改日期格式
- java - Stage.setScene() 似乎忽略了 maxHeight/Width 设置
- .htaccess - 未应用 nginx 服务器上的重写规则
- javascript - 将用户 HTML 输入作为 javascript 函数参数传递
- javascript - Antd横向子菜单“浮动”
- google-cloud-platform - 将表从 BigQuery 导出到 GCS 的最佳方式
- angular - 为什么我不能在速记 CSS 网格属性上使用 @HostBinding?
- python - Choropleth 地图 - AttributeError:“NoneType”对象没有属性“get”
- android - Android 的 Crashlytics 报告被 Proguard 和 Proguard 映射设置混淆了
- facebook - 解码 facebook 的 blob 视频 url(第二部分)