无法在router.post中获取主体,但可以使用app.post Node js / express

GrzegorzBrzęczyszczykiewicz

我的快速应用程序有问题。我正在做的是手把中的表格。我只想根据此教程注册用户:https : //www.learn2crack.com/2016/09/android-user-registration-login-node-client.html,但我正在将其调整为Web应用程序。

所以我创建了这样的表单:

<div style="text-align:center">
<form method="POST" action="/registerUser" enctype="application/x-www-form-urlencoded">
  Username: <input type="text" name="name" value=""/><br>
  Email: <input type="text" name="email" value=""/><br>
  Password: <input type="text" name="password" value=""/><br>
  Repeat password: <input type="text" name="repeat_password" value=""></input><br>
  <input type="submit" value="Register!"></input>
</form>
</div

像这样。然后,当我呼叫路由器以处理其结果(registerUser)时,我得到req.body.name是未定义的(顺便说一句,我检查过,req.query,req.params等都是未定义的。只是内容没有到达那里到路由器。所以当我这样做时:

router.post('/registerUser', (req, res) => {
    console.log("YO THERE WE GO");
    console.log(req.body);

///..... rest

这不起作用,它是未定义的。但是,如果我在app.js文件夹中执行此操作(路由是单独的,但是可以与其他调用(即GET)一起使用),则显然可以使用以下简单代码:

app.post('/registerUser',function(req,res){
  console.log(req.body);
})

对于应用程序,我具有以下内容:

'use strict';

// app.js
const express = require('express');
const session = require('express-session');
const app = express();
const path = require('path');
const bodyParser = require('body-parser');
app.use(express.static(path.join(__dirname, 'public')));
const router = require('./routes/router');
app.use(router);
const mongoose = require('mongoose');
const validate = require("validate.js");
const logger = require('morgan');
require('./db');
// const User = mongoose.model('User');
const Item = mongoose.model('Item');
const Pattern = mongoose.model('Pattern');

app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());

对于路由器:

“使用严格”;

require('../db');
const express = require('express');
const router = express.Router();
const mongoose = require('mongoose');
const Pattern = mongoose.model('Pattern');

我使用应用但不使用路由器得到它是怎么回事?

先感谢您!

Shivshankar

只是把app.use(bodyParser.json()); 在路线呼叫之前

'use strict';
const mongoose = require('mongoose');
const validate = require("validate.js");
const logger = require('morgan');
require('./db');

// const User = mongoose.model('User');
const Item = mongoose.model('Item');
const Pattern = mongoose.model('Pattern');
const router = require('./routes/router');
// app.js
const express = require('express');
const session = require('express-session');
const app = express();
const path = require('path');
const bodyParser = require('body-parser');
app.use(express.static(path.join(__dirname, 'public')));
app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.use(router);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章