如何使 req.body.password 不等于 undefined?
How do I make req.body.password not equal to undefined?
在我的 html 我有,
<input name="password" type="password" required class="form-control" id="exampleInputPassword1">
在我的节点中,
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: false })
app.get('/login.html', (req, res) => {
res.sendFile('./login.html', {root: __dirname});
})
app.post('/login', urlencodedParser, (req,res)=>{
req.body.password
})
但是,req.body.password 未定义或为空。我如何让它真正抓住用户输入的内容?它对它们中的任何一个都不起作用,但我只是以密码为例。所有包都已正确下载。
谢谢。
我使用了以下代码:
const express = require("express");
const bcrypt = require("bcrypt");
const bodyParser = require("body-parser");
const app = express();
const jsonParser = express.json();
const urlencodedParser = bodyParser.urlencoded({ extended: false });
// CHANGE THIS TO DATABASE LATER OF USERS
const users = [];
//listen for requests
app.listen(3000);
app.use(express.static(__dirname + "/public"));
app.get("/index.html", (req, res) => {
res.sendFile("./index.html", { root: __dirname });
});
app.get("/login.html", (req, res) => {
res.sendFile("./login.html", { root: __dirname });
});
app.post("/login", jsonParser, (req, res) => {
console.log("Hello");
console.log(req.body.password);
res.json(req.body.password);
});
app.get("/signup.html", (req, res) => {
res.sendFile("./signup.html", { root: __dirname });
});
app.post("/signup", urlencodedParser, (req, res) => {});
app.use((req, res) => {
res.sendFile("./404.html", { root: __dirname });
});
当我使用以下负载向 /login
路径发送 POST 请求时:
{
"password": "Check for Stack Overflow"
}
我在控制台上得到这个:
$ node app
Error: ENOENT: no such file or directory, stat '/root/404.html'
Hello
Check for Stack Overflow
我使用以下终点:http://2886795314-3000-ollie08.environments.katacoda.com/
我用 POSTMan 现在得到了这个:
上一个答案...
您必须使用 res
对象才能发送内容。例如,发送一个JSON结构,你可以这样做:
res.json(req.body.password)
因此您的代码将是:
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: false });
app.get("/login.html", (req, res) => {
res.sendFile("./login.html", { root: __dirname });
});
app.post("/login", urlencodedParser, (req, res) => {
res.json(req.body.password);
});
我还看到您没有使用 .listen
或导出您的模块。您可能还需要监听 运行 的端口!所以使用:
app.listen(3000, () => {
console.log("Server started in port 3000!");
});
最后。所以你的完整文件看起来像:
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: false });
app.get("/login.html", (req, res) => {
res.sendFile("./login.html", { root: __dirname });
});
app.post("/login", urlencodedParser, (req, res) => {
res.json(req.body.password);
});
app.listen(3000, () => {
console.log("Server started in port 3000!");
});
此外,请考虑阅读Express "Hello World" example。它以最简单的方式提供了原始文档中最好的示例。
req.body.password
有点像变量。它 'returns' 它是有价值的,但你没有用它 return 做任何事情。
不清楚 return 是什么意思。如果您想将某些内容记录到控制台,您可以这样做:
console.log(req.body.password);
在我的 html 我有,
<input name="password" type="password" required class="form-control" id="exampleInputPassword1">
在我的节点中,
const express = require('express');
const bodyParser = require('body-parser');
const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: false })
app.get('/login.html', (req, res) => {
res.sendFile('./login.html', {root: __dirname});
})
app.post('/login', urlencodedParser, (req,res)=>{
req.body.password
})
但是,req.body.password 未定义或为空。我如何让它真正抓住用户输入的内容?它对它们中的任何一个都不起作用,但我只是以密码为例。所有包都已正确下载。
谢谢。
我使用了以下代码:
const express = require("express");
const bcrypt = require("bcrypt");
const bodyParser = require("body-parser");
const app = express();
const jsonParser = express.json();
const urlencodedParser = bodyParser.urlencoded({ extended: false });
// CHANGE THIS TO DATABASE LATER OF USERS
const users = [];
//listen for requests
app.listen(3000);
app.use(express.static(__dirname + "/public"));
app.get("/index.html", (req, res) => {
res.sendFile("./index.html", { root: __dirname });
});
app.get("/login.html", (req, res) => {
res.sendFile("./login.html", { root: __dirname });
});
app.post("/login", jsonParser, (req, res) => {
console.log("Hello");
console.log(req.body.password);
res.json(req.body.password);
});
app.get("/signup.html", (req, res) => {
res.sendFile("./signup.html", { root: __dirname });
});
app.post("/signup", urlencodedParser, (req, res) => {});
app.use((req, res) => {
res.sendFile("./404.html", { root: __dirname });
});
当我使用以下负载向 /login
路径发送 POST 请求时:
{
"password": "Check for Stack Overflow"
}
我在控制台上得到这个:
$ node app
Error: ENOENT: no such file or directory, stat '/root/404.html'
Hello
Check for Stack Overflow
我使用以下终点:http://2886795314-3000-ollie08.environments.katacoda.com/
我用 POSTMan 现在得到了这个:
上一个答案...
您必须使用 res
对象才能发送内容。例如,发送一个JSON结构,你可以这样做:
res.json(req.body.password)
因此您的代码将是:
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: false });
app.get("/login.html", (req, res) => {
res.sendFile("./login.html", { root: __dirname });
});
app.post("/login", urlencodedParser, (req, res) => {
res.json(req.body.password);
});
我还看到您没有使用 .listen
或导出您的模块。您可能还需要监听 运行 的端口!所以使用:
app.listen(3000, () => {
console.log("Server started in port 3000!");
});
最后。所以你的完整文件看起来像:
const express = require("express");
const bodyParser = require("body-parser");
const app = express();
const urlencodedParser = bodyParser.urlencoded({ extended: false });
app.get("/login.html", (req, res) => {
res.sendFile("./login.html", { root: __dirname });
});
app.post("/login", urlencodedParser, (req, res) => {
res.json(req.body.password);
});
app.listen(3000, () => {
console.log("Server started in port 3000!");
});
此外,请考虑阅读Express "Hello World" example。它以最简单的方式提供了原始文档中最好的示例。
req.body.password
有点像变量。它 'returns' 它是有价值的,但你没有用它 return 做任何事情。
不清楚 return 是什么意思。如果您想将某些内容记录到控制台,您可以这样做:
console.log(req.body.password);