#javascript #firebase #contextmenu
# #javascript #firebase #contextmenu
Вопрос:
Пытаюсь отобразить в моем contextmenu список списков воспроизведения, которые существуют в моей базе данных firebase в реальном времени, чтобы я мог сохранять данные в этом списке воспроизведения. Я могу отображать их для контекстов моей страницы, но не для контекстов изображений или цитат.
Я получаю эту ошибку для идентификатора каждого игрока в консоли:
Непроверенная среда выполнения.lastError: не удается создать элемент с повторяющимся идентификатором -MMqelZvPmCUbuMCxQ42
Как я могу отображать свои плейлисты во всех контекстах, не сталкиваясь с этой ошибкой?
Вот этот код :
firebase.auth().onAuthStateChanged(function (user) {
if (user) {
var uid = auth.currentUser.uid;
console.log(uid);
//contextmenu for page CHANGE REPO TO MOST RECENT PLAYLIST -------------
chrome.contextMenus.create({
title: "Repo",
contexts: ["page"],
onclick: MyGenericClick,
});
chrome.contextMenus.create({
title: "Repo",
contexts: ["image"],
onclick: MyImageClick,
});
chrome.contextMenus.create({
title: "Repo",
contexts: ["selection"],
onclick: MyQuoteClick,
});
//playlist contextmenu from database
database
.ref(uid)
.once("value")
.then((snapshot) => {
console.log(snapshot.val());
snapshot.forEach(function (childSnapshot) {
// display existing playlists
chrome.contextMenus.create({
id: childSnapshot.val().idKey,
title: childSnapshot.val().name,
contexts: ["page"],
onclick: MyPagePlaylistClick,
});
chrome.contextMenus.create({
id: childSnapshot.val().idKey,
title: childSnapshot.val().name,
contexts: ["image"],
onclick: MyImagePlaylistClick,
});
chrome.contextMenus.create({
id: childSnapshot.val().idKey,
title: childSnapshot.val().name,
contexts: ["selection"],
onclick: MySelectionPlaylistClick,
});
});
});
} else {
console.log("No user is signed in.");
}
});
Ответ №1:
Не зная точного используемого вами API, я предполагаю, что вам нужно сделать каждый id
уникальный вызов в вашей базе данных; в настоящее время вы используете один и тот же childSnapshot.val().idKey
для каждой записи. Попробуйте что-то вроде
chrome.contextMenus.create({
id: childSnapshot.val().idKey '-page',
title: childSnapshot.val().name,
contexts: ["page"],
onclick: MyPagePlaylistClick,
});
chrome.contextMenus.create({
id: childSnapshot.val().idKey '-image',
title: childSnapshot.val().name,
contexts: ["image"],
onclick: MyImagePlaylistClick,
});
chrome.contextMenus.create({
id: childSnapshot.val().idKey '-selection',
title: childSnapshot.val().name,
contexts: ["selection"],
onclick: MySelectionPlaylistClick,
});
чтобы сделать каждую id
запись более уникальной.