Как получить доступ к localStorage с nodeJS? - PullRequest
0 голосов
/ 06 февраля 2020

У меня есть простое приложение nodeJS, которое анализирует URL-адрес YouTube, в котором хранится история просмотров пользователя и позволяет им добавлять видео в закладки. Я храню историю часов и закладки в localStorage. Мне нужно предоставить два маршрута в nodeJS, чтобы просмотреть текущую историю и сохранить URL-адрес в таблице истории. У меня нет опыта работы с сервером, но мне удалось создать приложение, используя nodeJS. Любые предложения приветствуются!

Соответствующий код:

//parse youtube url and change iframe src
function loadVideo(videoURL){
    //split youtube url and get ID 
    var videoID = videoURL.split("v=")[1];
    //change iframe src
    videoSource = `https://www.youtube.com/embed/${videoID}`;
    videoPlayer.src = videoSource;
    logHistory(videoSource)
}

//create div element
function logHistory(videoSource){
    var newHistory = document.createElement("li");
    newHistory.classList.add("history-item");
    newHistory.innerText = videoSource;
    historyContainer.appendChild(newHistory);
    //store element in localStorage
    var historyCount = historyContainer.children.length;
    localStorage.setItem("History item "+historyCount, videoInput.value)
}

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

LocalStorage - это концепция внешнего интерфейса. Доступно для JavaScript, запущенного в браузере. Node.js находится в бэкэнде и не может напрямую обращаться к LocalStorage.

Вам необходимо получить к нему доступ через скрипты, работающие в веб-интерфейсе, которые могут взаимодействовать с бэкэндом с помощью Ajax запросов.

0 голосов
/ 07 февраля 2020

Примечание. Этот ответ использует socket.io, который не был задан в вопросе , но позволяет серверу узлов взаимодействовать со сценариями на стороне клиента.

Я собираюсь поделиться примером из приложения, которое я создал где я использовал node.js [и socket.io], а также локальное хранилище. Как и многие другие, это нельзя сделать напрямую с вашего node.js сервера.

Этот код с моего сервера. js (node.js server) file.

function setStartingPlayer(startingPlayer, privateUsers) {
  //send starting player name to 
  io.emit('set-starting-player', startingPlayer, privateUsers);
}

Он отправляет в сокеты два фрагмента данных: начальный слой и частные пользователи. В этом примере начальный_плеер - это имя пользователя игрока, а privateUsers - массив имен текущих игроков.

В клиентском скрипте есть такая функция:

socket.on('set-starting-player', function(name, privateUsers) {
    setStorage('turnIndicator', username);
    var username = getStorage('username');

    if (name === username) {
      console.log('I am the starting player. My name is ' + username);
    }

    let playerInGame = checkPrivateUsers(privateUsers);
    if (playerInGame === true) {
        updateTurnIndicator(name);
    }
});

Эта функция обращается к локальному пользователю. хранилище двумя способами, оно хранит данные в локальном хранилище и получает данные из локального хранилища. Это пример того, как вы можете передавать данные из Node.js в клиентский скрипт и получать доступ к локальному хранилищу.

Стоит отметить: у меня есть две javascript функции, вот как я получаю доступ к локальному хранилищу.

function setStorage(key,info) {
    localStorage.setItem(key, JSON.stringify(info));
}

function getStorage(key) {
    var item = localStorage.getItem(key);
    return JSON.parse(item);
}

Если у вас есть вопросы, дайте мне знать. Надеюсь, это поможет.

...