javascript - NodeJS res.body 仅在一台路由器上未定义

标签 javascript node.js express body-parser

我正在使用 swift 向 NodeJS 服务器发送数据。 这是 Swift 代码:

var data:[String:String] = [:]
data["ABC"] = "nothing"
let req = HTTPRequest(url_to_request: "https://xxx.xxx.xx.x/update", method: HTTPRequest.HTTPRequestMethod.post, data: Profile.toJSON(dict: data))

这是 NodeJS:

console.log("Server is up!");
var bodyParser = require('body-parser');
var express = require('express');
var MongoClient = require('mongodb').MongoClient,
  assert = require('assert');
var http = require('http');
var https = require('https');
var fs = require('fs');
var bcrypt = require('bcryptjs');
var sslOptions = {
  key: fs.readFileSync('key.pem', 'utf8'),
  cert: fs.readFileSync('cert.pem', 'utf8'),
  passphrase: 'phrase',
  rejectUnauthorized: false
};


var app = express();


//Variables:

var httpPort = 8888;
var httpsPort = 8443;



app.use(bodyParser.urlencoded({
  extended: false,
  limit: '20mb'
}));

app.use(bodyParser.json({
  limit: '50mb'
}));

// parse application/json json size limit

// parse application/x-www-form-urlencoded




// setup server
app.set("port_https", httpsPort);

//check secure connection

app.all("*", function(req, res, next) {
  console.log("Secure connection: " + req.secure);
  if (req.secure) {
    return next();
  }
  res.redirect("https://" + req.hostname + ":" + app.get("port_https") + req.url);
});








// add User

app.post('/register', register);
//signIn
app.post('/login', logIn);

//Update user's profile details.

app.post('/update', updateProfile);

// Request profile details.
app.post('/profile', profileRequest);


function updateProfile(req, res) {
  console.log(res.body); // ---> undefined
}

当我发送包含数据的发布请求以登录、配置文件、注册路由器时,res.body 运行良好。但是当我由于某种原因发送数据进行更新时 req.body 未定义:

错误:

Server: Secure connection: true

Server: undefined #----> log of res.body

Server: Connected successfully to databse!

stderr: /home/asaf/NodeJS/IBQA/IBQA_Server/node_modules/mongodb/lib/mongo_client.js:350
          throw err
          ^

TypeError: Cannot read property 'ABC' of undefined
    at /*****/server.js:92:33
    at connectCallback (*****/mongo_client.js:428:5)
    at /*****/node_modules/mongodb/lib/mongo_client.js:347:11
    at nextTickCallbackWith0Args (node.js:419:9)
    at process._tickCallback (node.js:348:13)

closing code: 1

最佳答案

如果您的请求存在于 req 变量中,则 res 用于发送响应。尝试 console.log(req.body)

关于javascript - NodeJS res.body 仅在一台路由器上未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45304218/

相关文章:

javascript - 如何使用 Google 可视化 setSelection() 防止无限循环?

ajax - 从客户端查询时,带参数的 Express.js 路由会产生 404

javascript - 按钮的 ID 发生变化,但 document.ready 函数调用先前值的方法

javascript - 护照 js req.user 在 req.login 后不可用

javascript - 添加/显示附加表单字段的最佳方式

javascript - 如何使用 ng-model 绑定(bind)值

javascript - 轻松集成 PhotoSwipe 的方法

php - 带有while循环的mysql Node js动态数组

node.js - Nodejs + Aerospike 崩溃

javascript - Node.js 应用、Express 和 Cloud Foundry