PM的需求是点击用户的×,删除当前用户名下所有的库和表。即进行一个级联回调的操作。如下图:
主要做法就是利用map的k v键值对的方式。
map键值对的知识点:
var m = new Map();
m.set("edition", 6) // 键是字符串
m.set(262, "standard") // 键是数值
m.set(undefined, "nah") // 键是undefined
用户的删除主要是用了Element UI框架里面的tag标签删除的办法。
handleClose(tag) {
this.dynamicTags.splice(this.dynamicTags.indexOf(tag), 1);
}
首先是找到user对应下的库:
this.mapUser = new Map();
res.data.forEach((data) => {
this.mapUser.set(data.user, this.dbName);
});
然后利用库获取到用户名下的表:
const arr = [];
res.data.forEach((data) => {
arr.push(data.tableName);
console.log(data.tableName);
});
this.mapTable.set(this.dbName, arr);
console.log(this.mapTable);
最后用tag标签的删除方法进行库和表的删除操作:
handleClose(tag) {
this.userList.splice(this.userList.indexOf(tag), 1);
const dbName1 = this.mapUser.get(tag);
this.dbList.splice(this.dbList.indexOf(dbName1), 1);
const tableArr = this.mapTable.get(dbName1);
tableArr.forEach((data) => {
this.tableList.splice(this.tableList.indexOf(data), 1);
});
},
但其实这里最好的做法是找后端要一个接口来反查user 和table,因为用户和表是一对多的关系。库和表也是一对多的关系。我删除了当前用户下所有的库,那么该库下的所有的表都会被删除。但问题就在这里:当前被删除的库下对应表可能不是当前被选中删除用户名下的。