【问题标题】:How to get data from back end side, to use it in the browser side?如何从后端获取数据,在浏览器端使用它?
【发布时间】:2020-04-19 18:15:48
【问题描述】:

我是编程新手,听说这个网站上有些人很生气,但请不要生气。我正在创建一个 Web 应用程序,它有一个网页,还进行了一些计算并与数据库 (NeDB) 一起使用。我有一个 index.js

    const selects = document.getElementsByClassName("sel");
    const arr = ["Yura", "Nairi", "Mher", "Hayko"];
    for (let el in selects) {
      for (let key in arr) {
        selects[el].innerHTML += `<option>${arr[key]}</option>`;
      }
    }

我有一个用数组中的数据填充选择元素的函数。

在其他文件名为:getData.js:

    var Datastore = require("nedb");
    var users = new Datastore({ filename: "players" });
    users.loadDatabase();

    const names = [];

    users.find({}, function (err, doc) {
       for (let key in doc) {
          names.push(doc[key].name);
       }
    });

我有一些从 db 获取数据并将其放入数组的代码。而且我需要在上面提到的 index.js 中使用该数据,但问题是我不知道如何将数据从 getData.js 传输到 index.js。我试过module.exports但它不起作用,浏览器控制台说它无法识别require关键字,我也无法直接在index.js中获取数据,因为浏览器无法识别与数据库相关的代码。

【问题讨论】:

  • 我们需要了解您的网络应用程序的架构。请告诉我们(确认)index.js 是在浏览器(客户端)上运行,getData.js 是在服务器端还是客户端运行。这将为我们指明正确的方向,以便我们为您提供相应的帮助。
  • 是的,index.js 是客户端文件,getData 运行在服务器端。
  • 您是否了解您的一些 Javascript 在浏览器中运行,而另一些在服务器上运行?对于网页本身(在浏览器中运行)中的 Javascript 从服务器获取数据,它会进行 Ajax 调用,可能使用浏览器中的 fetch() api 并指向服务器上的特定路由,该路由发送想要的数据。或者,您可以在浏览器最初请求数据时将数据插入到网页中,这样数据已经在网页中,并且您的网页中的 Javascript 可以使用它。
  • 我认为您的问题通常与javascript模块有关,以及如何导入和导出函数和数据。

标签: javascript node.js backend transfer


【解决方案1】:

您需要提供一个连接到数据库的服务器。

浏览器 -> 服务器 -> 数据库

浏览器 -> 服务器:服务器提供浏览器(客户端)可以从中获取数据的端点。 https://expressjs.com/en/starter/hello-world.html

Server -> DB:从数据库中获取数据,并可以对它做任何事情。在您的情况下,应将数据提供给客户。


待办事项

第 1 步:设置服务器。例如 express.js (google it)

第 2 步:学习如何从浏览器(客户端)获取数据 AJAX GET 是 google 的关键字。

第 3 步:从您的服务器设置数据库连接并获取您的数据

第 4 步:对数据做任何你想做的事情。

【讨论】:

  • 您提供的链接假定​​ OP 正在使用 express.js。另外,链接是德语。
  • 我假设 OP 根本不使用服务器
  • Express.js 是 Node.js 中的一个框架。您假设 OP 正在使用该框架。还请提供一个使用纯 Node.js 而没有 express.js 的教程的链接,例如这个:nodejs.dev
  • 你这是什么意思?为什么 OP 应该使用纯 Node.js 使用纯 Node.js 没有任何意义。此外,我参考了入门示例。
  • 为什么纯 Node.js 没有意义?为什么 OP 应该使用 express.js? Express.js 不是必需的,OP 也没有提及它,但如果你想保持这样的答案,我没有任何反对意见。
【解决方案2】:

起初我认为这是一种简单的方法,但我对它们进行了一些研究,并意识到我没有足够的信息来了解它的真正工作原理。现在我解决了这个问题,使用 Promise 和模板引擎 ejs。谢谢大家的时间。感谢您的帮助)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-24
    • 2022-01-21
    • 2023-01-21
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 2022-07-01
    • 1970-01-01
    相关资源
    最近更新 更多