节点js没有返回正确的结果?

时间:2017-11-10 11:41:09

标签: javascript json node.js

我有这个节点js程序应该在控制台中返回问变量但它返回undefined这里是代码和我试图解析的输入: -

router.post('/createorder',function(req,res){
    console.log(req.body.ProductName);

    // var obj=JSON.parse(req.body);
    res.send(req.body);
});

输入:

{
  "ProductName":"Wine",
  "ProductPrice":"500",
  "ProductQuantity":"2",
  "ProductCost":"1000",
  "SellerId":"2"  
}

这是我正在使用的主要模块

var express= require('express');
var routes=require('./routes/api');
var bodyparser=require('body-parser');
var mysql = require('mysql');

var db=mysql.createConnection({
    host:'localhost',
    user:'root',
    password:'',
    database:'nodemysql'
})
//setting up express
var app = express();
app.use(bodyparser.urlencoded({extended:false}));
app.use(bodyparser.json());

app.use(routes);

//listen for requests
/*app.get('/',function(req,res){
    console.log('get trial method called');
    res.send({name:'Atul'});
});*/
app.listen(3000,function(){
  console.log('server started on port 3000 ');
});

我想访问一个特定的对象以便存储在数据库中吗?

1 个答案:

答案 0 :(得分:0)

正如评论中提到的那样,你需要确保express可以解析请求的正文,因为默认情况下它不会这样做。假设您正在使用快速框架。你可以有这样的东西。

var express = require('express')
var bodyParser = require('body-parser')

var app = express()

// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }))

// parse application/json
app.use(bodyParser.json())

现在你可以阅读身体了。

请注意,如果您在添加上述代码之前控制记录您的req对象,则不会看到body属性。

更新

这就是我在app.js文件中的内容

var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');

var index = require('./routes/index');


var app = express();

// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');

// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));

app.use('/', index);


// catch 404 and forward to error handler
app.use(function(req, res, next) {
  var err = new Error('Not Found');
  err.status = 404;
  next(err);
});

// error handler
app.use(function(err, req, res, next) {
  // set locals, only providing error in development
  res.locals.message = err.message;
  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page
  res.status(err.status || 500);
  res.render('error');
});

module.exports = app;

在我的routes / index.js中,我有以下

var express = require('express');
var router = express.Router();

router.post('/createorder',function(req,res){
    console.log(req.body);

    // var obj=JSON.parse(req.body);
    res.send(req.body);
});

module.exports = router;

我用邮递员应用程序对它进行了测试,但它确实有效。