问题描述
我试图在查询中使用用户在我的 RESTful API
上的输入来处理一个 GET
请求,并使用该数据随机化一个数字并将该信息用于应用程序的其余部分。任何有关在整个应用程序中存储值并在不同块上使用它们的最佳解决方案的指导表示赞赏。
部分代码示例如下:
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",res) => {
let guessednumber = req.query.guess;
if (guessednumber !== theNumber) {
console.log("Wrong! Guess again");
}
我正在尝试在 /guess 请求中使用来自 /Start 请求的数字值!
解决方法
您需要将 theNumber
变量保留在两个回调的范围之外,例如
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",res) => {
let guessedNumber = req.query.guess;
if (guessedNumber !== theNumber) {
console.log("Wrong! Guess again");
}
我也会对 /guess
端点使用 POST
想到以下 3 种存储数据的方式:
- 将 theNumber 声明为全局变量。
- 将变量存储在 json 中并在需要时导入(例如:fs 模块)。
- 将其存储在数据库中(例如:MongoDB)。
方法 1 是最简单的方法。该变量可从所有路由访问,如果您的应用重新启动,它将被删除。
let theNumber = 0;
...
app.get("/start",res) => {
theNumber = ...
...
方法 2 和方法 3 将使变量一旦创建,即使应用程序重新启动也将持续存在。但是,对于这个简单的用例,我认为它们太过分了。