我正在尝试利用单个HTML页面来从sqlite数据库动态填充内容。该查询是通过带有Knex的Electron执行的,并由Electron传递到HTML页面。问题是,当我注销用户页面并以其他用户身份登录时,该数组仍保留在第一个登录屏幕中,因此它也填充了前一个用户的所有图块。我相信这与承诺没有得到解决有关,但我不确定。
我试图用各种方法来解决这个问题,一种方法是通过附加HTML数组,还可以在调用注销函数时清除DIV内容,但是我认为问题在于Knex查询和Promise
function loadTiles(roleSelection) {
let refTiles = knex({roleSelection}).select('RefTiles');
refTiles.then(function(userTiles){
newWin.webContents.send('user:tiles', userTiles);
newWin.webContents.send('ref:name', roleSelection);
});
};
HTML页面使用以下脚本接收此查询:
document.addEventListener("DOMContentLoaded", function (){
ipcRenderer.send('TemplateWindowLoaded');
ipcRenderer.on('user:tiles', (event, userTiles) => {
console.log(userTiles);
for (var c in userTiles) {
var containerElement = document.getElementById('main');
var refTile = document.createElement('div');
refTile.id = userTiles[c]; refTile.className = "modal-btn";
refTile.innerHTML = userTiles[c].RefTiles;
containerElement.appendChild(refTile);
}
});
ipcRenderer.on('ref:name', (event, roleSelection) => {
var user = document.getElementById('userName');
user.innerHTML = "";
user.innerHTML += roleSelection;
});
});
我希望兑现这一诺言,以便在对该函数进行新调用时将返回一个新查询。