[英]req.body returns an empty object // output {}
Sending request from the client side returns an empty object, I have checked all the likely solution on stackoverflow, none seem to work for me.从客户端发送请求返回一个空的 object,我已经检查了 stackoverflow 上所有可能的解决方案,似乎没有一个对我有用。 I really need help as I have been stuck for over two weeks now.
我真的需要帮助,因为我已经被困了两个多星期了。
Check out my html below:在下面查看我的 html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Register User</title>
<link rel="stylesheet" href="app.css"/>
</head>
<body>
<form action="register.js" id="mForm" method="POST">
<div>
<label for="nama"> Firstname</label>
<input type="text" id="nama" name="nama" required>
</div>
<br>
<div>
<label for="namo"> Lastname</label>
<input type="string" id="namo" name="namo" required>
</div>
<br>
<div>
<label for="password"> password</label>
<input type="password" id="password" name="password" required>
</div>
<br>
<div>
<label for="email"> email</label>
<input type="email" id="email" name="email" required>
</div>
<br>
<div>
<button type="submit" >signup</button>
</div>
</form>
<br>
<div id="det">
</div>
<script src="register.js"></script>
</body>
</html>
<a href="login.html"> login user</a>
While the fetch code is as shown below using xmlHttpRequest:使用 xmlHttpRequest 获取代码如下所示:
var form = document.getElementById('mForm');
form.addEventListener('submit', sendData);
function sendData(event) {
event.preventDefault();
var namo = document.getElementById('namo').value;
var nama = document.getElementById('nama').value;
var email = document.getElementById('email').value;
var password = document.getElementById('password').value;
var params = JSON.stringify({
nama,
namo,
password,
email
});
var vali = params;
const XHR = new XMLHttpRequest();
XHR.open("POST", "http://localhost:5000/admin/pass", true);
XHR.setRequestHeader("Content-Type", "applicaion/json");
XHR.onload = function () {
const value = this.responseText;
const deta = document.getElementById('det');
deta.innerHTML = `
<br>
<div>${value}</div>
<div>Firstname:${nama}</div>
<div>Lastname:${namo}</div>
<div>Email: ${email}</div>
<br>
`
console.log(value);
};
XHR.send(vali);
}
Below is the schema (admin.js), if I include required:true in my schema, it return a validation error of path required.下面是架构(admin.js),如果我在架构中包含 required:true ,它会返回所需路径的验证错误。
const mongoose = require ('mongoose');
const adminSchema = new mongoose.Schema({
nama:{
type: String
},
namo:{
type: String
},
email:{
type: String
},
password:{
type: String,
required: true
},
});
adminSchema.index({email: 1}, {unique: true});
module.exports = mongoose.model('admin', adminSchema);
Below is the router that return empty {}:以下是返回空 {} 的路由器:
let express = require('express');
let router = express.Router();
const Admin = require('../model/admin');
const jwt = require('jsonwebtoken');
const bcrypt = require('bcryptjs');
const app = express();
app.use(express.json());
router.post('/pass', express.json(), async function(req, res) {
res.setHeader("Access-Control-Allow-Origin", "http://localhost:8080");
res.setHeader("Access-Control-Expose-Headers", "Content-Type, application/json;charset=utf-8");
const { nama, namo, email, password } = req.body;
console.log(req.body);
return res.status(201).send(response);
});
While the controller is below: controller 如下:
if (process.env.NODE_ENV !== 'production') {
require('dotenv').config();
}
const express = require('express');
const app = express();
const cors = require('cors');
const methodOverride = require('method-override');
const registerRouter = require('./routes/register');
const parcelRouter = require('./routes/parcel');
const adminRouter = require ('./routes/admin');
const path = require('path');
const router = express.Router();
const mongoose = require('mongoose');
mongoose.connect(process.env.DATABASE_URL, {
useNewUrlParser: true, useUnifiedTopology: true});
const db = mongoose.connection;
db.on('error', error => console.error(error));
db.once('open', () => console.log('connected to Mongoose'));
app.use(express.json());
app.use(express.urlencoded({extended: false}));
app.use(express.text({type: 'application/json'}));
app.use('/', express.static(path.join(__dirname, 'static')));
app.use(cors());
app.use(methodOverride('_method'));
app.use('/admin', adminRouter);
app.use('/parcels/', router);
app.use('/register', registerRouter);
app.use('/user/', router);
app.use('/parcel', parcelRouter);
app.listen(process.env.PORT || 5000);
In the above code i did not find response
variable declared used in return res.status(201).send(response);
在上面的代码中,我没有找到在
return res.status(201).send(response);
中声明的response
变量; anywhere.任何地方。 it seems you forgot to define that may be that was the reason it is coming {} in response
您似乎忘记定义这可能是它来响应的原因{}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.