web extension et communication
bonjour,
je me fais une extension avec un background script, et une popup.
l'extension utilise "localbase.js" qui permet une gestion des indexedDB plus simple
la popup veut recuperer un recapitulatif des clients pour cela, elle fait browser.runtime.sendMessage({action: 'getClientsRecap'}, ({data}) => { console.log(data); });.
le background quant a lui fait : function getClientsRecap(request, sender, sendResponse) { sendResponse({data: 'ok'}); })=> ceci fonctionne
cependant, lorsque j'inclu la requete dans l'indexedDB, j'ai le fameux message "The message port closed before a response was received."
Code:
1 2 3 4 5 6 7 8 9 10
| db.collection('clients').get().then(clients => {
const recapClients = [];
clients.forEach(client => {
recapClients.push({
id: client.id,
name: `${client.personLastName} ${client.personFirstName}`
});
});
sendResponse({data: recapClients});
}); |
j'ai tout essaye :
une simple promesse : ca fonctionne
Code:
1 2 3 4 5
| return new Promise(resolve => {
resolve();
}).then(() => {
sendResponse({data: 'ok'});
}); |
l'acces en DB dans une promesse, ca fonctionne pas
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| return new Promise(resolve => {
db.collection('clients').get().then(clients => {
const recapClients = [];
clients.forEach(client => {
recapClients.push({
id: client.id,
name: `${client.personLastName} ${client.personFirstName}`
});
});
resolve(recapClients);
});
}).then(recapClients => {
sendResponse({data: recapClients});
}); |
j'avoue etre un peu perplexe... je ne comprends pas ce qui se passe
ps : la lib en question est celle-ci : https://github.com/dannyconnell/localbase
pss: quand je fais des console.log du retour DB (dans le background), j'ai bien ma data