【发布时间】:2021-07-30 15:26:51
【问题描述】:
我在 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);
}
});
})
【问题讨论】:
-
可能有网络/服务器错误?
-
但是删除的项目在数据库中被删除了,只是视图显示不正确
-
没问题,只需尝试
remove({ _id: req.params.id })方法而不是 2 个操作 findOne 和 remove 参见 answer -
router.remove是你的主函数,不要改变它,在那个函数里面只写remove方法而不是findOne。喜欢Tool.remove({ _id: req.body.id }... -
现在效果很好。非常感谢@turivishal :))