javascript - Node.js 在控制台中打印回未定义的属性

标签 javascript node.js express routes body-parser

我正在尝试打印发布后返回的一些数据,但它打印为未定义。解析器设置正确吗?

服务器文件

const taskController = require("./controllers/registration");
const express = require('express')
const parser = require('body-parser');
const app = express()
const router = express.Router();

app.use(parser.urlencoded({extended:false}));
app.use(parser.json());

app.use("/api", router);

router.route("/register").post(taskController.register);
router.route("/login").get(taskController.login);
router.route("/logout").get(taskController.logout);
var server = app.listen(3000);

Controller

var server = require('../app.js')
const mysql = require('mysql');

exports.register = function(req, res){
  console.log(req.body.fName);
  console.log(req.body.lName);
  console.log(req.body.id);
  res.send("Registering");
};

谢谢。

最佳答案

我得到了你的代码并在本地运行。 我更改路由器 最后 我使用curl发出post请求。 答案结束我附上结果。

服务器.js

const taskController = require("./controllers/registration");
const express = require('express')
const parser = require('body-parser');
const app = express()
const router = express.Router();

app.use(parser.urlencoded({extended:false}));
app.use(parser.json());

app.use("/api", router);
// Here Change your router 
router.post("/register", taskController.register);

var server = app.listen(3000);

Controller /注册

exports.register = function(req, res){

    // console.log (req.body)
    console.log(req.body)

    // existing console.log
    console.log(req.body.fName);
    console.log(req.body.lName);
    console.log(req.body.id);
    res.send("Registering");
};

用户curl发出post请求 1.不带参数

curl -d '{}' -H "Content-Type: application/json" -X POST http://localhost:3000/api/register

//控制台输出

{}
undefined
undefined
undefined
  • 带参数 //fName:T,lName:黑色,id:1234

    curl -d '{"fName":"T", "lName":"Black", "id": 1234}' -H "内容类型:application/json"-X POST http://localhost:3000/api/register

  • //控制台输出

    { fName: 'T', lName: 'Black', id: 1234 }
    T
    Black
    1234
    

    这可能对你有帮助:)

    关于javascript - Node.js 在控制台中打印回未定义的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53690442/

    相关文章:

    node.js - 尝试了解 Node.js 编程模型的工作原理

    javascript - 重定向 url 在本地主机中不起作用 - Node js

    javascript - Node 本地主机不返回日期

    javascript - Controller 中需要模块错误

    javascript - 查看传递给抛出异常的构造函数的字符串

    javascript - 我可以在前端 Javascript 中运行 SQL 查询吗?

    javascript - 在 Jasmine 中对多个相关文件使用描述 block

    javascript - 从浏览器获取客户端时区

    node.js - NPM 模块不会在没有 sudo 的情况下全局安装

    node.js - 我们可以使用 postgresql 的解析服务器吗