如何在 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!!!");
});
我试图在 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!!!");
});