【问题标题】:How to access localStorage with nodeJS?如何使用 nodeJS 访问 localStorage?
【发布时间】:2020-05-22 09:18:51
【问题描述】:

我有一个简单的 nodeJS 应用程序,它解析一个 youtube URL,该 URL 存储用户的观看历史并让他们为视频添加书签。我将观看历史记录和书签存储在 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)
}

【问题讨论】:

  • 无法使用 nodejs 访问本地存储。它驻留在您的浏览器中
  • 您可以使用浏览器脚本将其复制到 cookie 中。

标签: node.js local-storage backend


【解决方案1】:

LocalStorage 是一个前端概念。 运行在浏览器中的 JavaScript 可以访问它。 Node.js 驻留在后端,无法直接访问 LocalStorage。

您需要通过在前端运行的脚本来访问它,该脚本可以使用 Ajax 请求与后端进行通信。

【讨论】:

    【解决方案2】:

    注意。此答案使用了未在问题中提出的 socket.io,但允许节点服务器与客户端脚本进行通信。

    我将分享一个我使用 node.js [和 socket.io] 以及本地存储创建的应用程序的示例。就像其他人所说的那样,这不能直接从您的 node.js 服务器完成。

    此代码来自我的 server.js(node.js 服务器)文件。

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

    它向套接字发送两条数据:startingPlayer 和 privateUsers。在这个例子中,startingPlayer 是玩家的用户名,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);
    }
    

    如果您有任何问题,请告诉我。希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-16
      • 2017-05-07
      • 2012-05-08
      • 2016-09-08
      • 2020-09-19
      • 1970-01-01
      • 2016-01-31
      • 2020-10-28
      相关资源
      最近更新 更多