如何在 Express.js 中结束循环以在“*”下看到一些内容

How to end loop in Express.js to see some under "*"

我试图在 Express.js 中使用一个循环,但无法结束它。

我的循环总是写“你好”,我在 /hello/SomeNumber 之后打印(例如 /hello/5)并显示 5 个你好。

我希望它在 >3 之后停止并在“*”下显示消息。

app.get("/repeat/:word/:numbers", function(req, res) {
  var word = req.params.word;
  var numbers = Number(req.params.numbers);
  var lol = ""
  for (var i = 1; i <= numbers; i++) {
    lol += word + " ";
  }
  res.send(lol);
});


app.get("*", function(req, res) {
  res.send("Sorry, page not found...What are you doing with your life?");
});

app.listen(process.env.PORT, process.env.IP, function() {
  console.log("Server has started!!!");
});

使用中断;

for (var i = 1; i <= numbers; i++) {
  if(i>3)
  break;
   lol +=  word + " ";
}

是这样的吗?

app.get("/repeat/:word/:numbers", function(req, res) {
    var word = req.params.word;
    var numbers = Number(req.params.numbers);
    if (numbers > 3) {
        res.send("Sorry, page not found...What are you doing with your life?");
    } else {
        var lol = ""
        for (var i = 1; i <= numbers; i++) {
            lol += word + " ";
        }
        res.send(lol);
    }

});

编辑:在 OP 接受了 Enthusiastic Developer 的回答后,我的回答不再被接受,据我所知这会给出错误原因,next() 在循环中,这会给出错误Error: Can't set headers after they are sent.

如果您确定要使用中间件来捕获所有请求,那么这里:

app.get("/repeat/:word/:numbers", function(req, res, next) {
    var word = req.params.word;
    var numbers = Number(req.params.numbers);
    if (numbers > 3) {
        next();
    } else {
        var lol = ""
        for (var i = 1; i <= numbers; i++) {
            lol += word + " ";
        }
        res.send(lol);
    }
});


app.all("*", function(req, res) {
    res.send("Sorry, page not found...What are you doing with your life?");
});

伙计,上面的人不理解这个任务。如果迭代次数超过 3,则需要跳转到下一个中​​间件,对吗?

试试这个:

var express = require('express');
var app = express();

app.get('/repeat/:word/:numbers', function(req, res, next) {
  var word = req.params.word;
  var numbers = Number(req.params.numbers);
  var lol = '';
  for (var i = 1; i <= numbers; i++) {
    if (i > 3) next()
    lol += word + ' ';
  }
  res.send(lol);
});

app.get('*', function(req, res) {
  res.send('Sorry, page not found...What are you doing with your life?');
});

app.listen(process.env.PORT, process.env.IP, function() {
  console.log('Server has started!!!');
});

这是我的解决方法。在循环中添加一个 if 语句来检查数字是否 > 3。如果是,使用 break 停止循环并将 * 路由中的文本分配给 lol 变量。然后在调用 'res.send' 时路由函数的末尾,它包含 n * hallo 或 "Sorry, page not found...What are you doing with your life?"

这是代码。希望对您有所帮助。

app.get("/repeat/:word/:numbers", function(req, res) {
  var word = req.params.word;
  var numbers = Number(req.params.numbers);
  var lol = ""
  for (var i = 1; i <= numbers; i++) {
    if (numbers > 3) {
      break;
      lol = 'Sorry, page not found...What are you doing with your life?';
    } else {
      lol += word + " ";
    }
  }
  res.send(lol);
});


app.get("*", function(req, res) {
  res.send("Sorry, page not found...What are you doing with your life?");
});

app.listen(process.env.PORT, process.env.IP, function() {
  console.log("Server has started!!!");
});