Javascript 从一个GET请求导出输入查询,并在单独的请求中使用它们

Javascript 从一个GET请求导出输入查询,并在单独的请求中使用它们,javascript,rest,http,get,module-export,Javascript,Rest,Http,Get,Module Export,我试图在查询一个GET请求时使用用户在我的restfulapi上的输入,并使用该数据将一个数字随机化,并将该信息用于应用程序的其余部分。任何关于存储值并在整个应用程序的不同块上使用它们的最佳解决方案的指导都是值得赞赏的。 部分代码示例如下所示: app.get("/start", (req, res) => { const numberOfFigures = req.query.figures; const randomBaseN

我试图在查询一个
GET
请求时使用用户在我的
restfulapi
上的输入,并使用该数据将一个数字随机化,并将该信息用于应用程序的其余部分。任何关于存储值并在整个应用程序的不同块上使用它们的最佳解决方案的指导都是值得赞赏的。 部分代码示例如下所示:

    app.get("/start", (req, res) => {
        const numberOfFigures = req.query.figures;
        const randomBaseNumber = Math.random();
        const theNumber = (randomBaseNumber * 10 ** numberOfFigures).toFixed(0);
        res.send(`guess the ${numberOfFigures} digit number!`);

    app.get("/guess", (req, res) => {
        let guessedNumber = req.query.guess;
        if (guessedNumber !== theNumber) {
            console.log("Wrong! Guess again");
        }

例如,我试图在/guess请求中使用/Start请求中的数字值

您需要将
number
变量保持在两个回调的范围之外,例如

    let theNumber = 0
    app.get("/start", (req, res) => {
        const numberOfFigures = req.query.figures;
        const randomBaseNumber = Math.random();
        theNumber = (randomBaseNumber * 10 ** numberOfFigures).toFixed(0);
        res.send(`guess the ${numberOfFigures} digit number!`);

    app.get("/guess", (req, res) => {
        let guessedNumber = req.query.guess;
        if (guessedNumber !== theNumber) {
            console.log("Wrong! Guess again");
        }

我还将POST用于
/guess
端点

以下三种存储数据的方法:

  • 将编号声明为全局变量
  • 将变量存储在json中,并在需要时导入(例如:fs模块)
  • 将其存储在数据库中(例如:MongoDB)
  • 方法1是最简单的方法。该变量将可从所有路由访问,如果应用程序重新启动,该变量将被删除

    let theNumber = 0;
    ...
    app.get("/start", (req, res) => {
        theNumber = ...
        ...
    

    方法2和3将使变量在创建后保持不变,即使应用程序重新启动。然而,对于这个简单的用例,我认为它们是多余的。

    但是当number=0时,全局值将保持为零,并且不会为下一个端点更新!对吗?
    数字=(randomBaseNumber*10**numberOfFigures)。toFixed(0)
    将更新值是的,但在范围内,对吗?我使用这个概念,但对于下一个作用域或端点,编号将重置为原始全局值,而不是更新后的值!您可能需要将其声明为
    this。编号
    并按此地址对其进行寻址全局变量将转换为原始值,因为它是一个随机数,所以我必须存储或导出并导入它以用于下一个端点,对吗?否则我相信它不会起作用。另一方面,我尝试了不同的导出模块技术,但没有结果。我需要导出开始查询作为计算的基础。剩下的没问题。如何获取端点上的查询值并将其存储为JSON并将其导入下一个端点?这是meI的主要任务,我建议查看node.js中的“fs”模块,特别是writeFile方法。如果您想在json中存储变量,这是一个很好的起点。只需创建一个variables.json文件(随意命名),在创建后将数字值写入json,在需要使用数字值的任何地方都需要json文件(类似于:const jsonValues=require('path_to_variables.json');),并将其作为json属性访问(让theNumber=jsonValues.theNumber;).我对所有变量都这么做了。唯一一个我还不能理解的是const numberOfFigures=req.query.figures;我不知道如何将它导出并导入到另一个JSON中,这样它将是reserved const。它应该对所有变量都起相同的作用,除非问题出在其他地方。您是否打印了req.query.figures?它是未定义的吗?是否正确发送查询中的值?(像这样:/start?图=3)。它对req.query.guess有效吗?问这些问题可能有助于你找到解决方案。是的,实际上我忘了重新分配任务。我的参数和我的参数是一样的。这就是我感到困惑的原因。成功了。谢谢