【问题标题】:Get data from AJAX request in NodeJS and store in DB从 NodeJS 中的 AJAX 请求中获取数据并存储在 DB 中
【发布时间】:2016-04-27 11:04:52
【问题描述】:

我在 NodeJS 中从客户端获取数据时遇到问题。

在客户端,我准备了 JSON 数据,如您在 codepen 中看到的那样

在服务器端,我试图从客户端获取这些数据:

var express = require('express');
var mysql = require('mysql');

var app = express();

app.use('/', express.static('../client/app'));
app.use('/bower_components', express.static('../client/bower_components/'));

var server = require('http').createServer(app);

var bodyParser = require('body-parser');
app.jsonParser = bodyParser.json();
app.urlencodedParser = bodyParser.urlencoded({ extended: true });

//mysql connection setup
var connection = mysql.createConnection({
    host : "localhost",
    port: "3306",
    user : "root",
    password : "",
    database : "db",
    multipleStatements: true
});

app.get("/cities", function(req, res) {

    console.log(res.body); //I'm getting nothing

    var data= {
        city: req.body.city,
        country: req.body.country
    };

    var query = connection.query('INSERT INTO table SET ?', data, function(err, res) {
        if (err) {
            console.log(err);
        } else {
            console.log('success');    
        }
    });
    console.log(res); 
});
    
server.listen(3000, function () {
    'use strict';
});

我做错了什么?有没有办法在 ST 中调试 NodeJS? 谢谢。

【问题讨论】:

  • database : "", 没有选择数据库。
  • 对不起,我忘了在上面的例子中包含它,但这不是问题。谢谢

标签: jquery mysql ajax node.js body-parser


【解决方案1】:

请尝试req.params.city 获取输入数据。它适用于我的项目。但是,req.body 我用于获取通过 POST 方法发送的数据。

app.get - 使用 req.params app.post - 使用 req.body

【讨论】:

  • 我已更改为 req.params,但我仍然无法从客户端获取数据:/ { city: undefined, country: undefined }
  • 尝试:app.get("/cities/:city/:country", function(){ console.log(req.params.city); });并发送网址,例如:localhost:3000/cities/london/britain
  • 我想将所有数据从 JSON(不是特定字段,如 )存储到 db,我对 NodeJS 中的 API 形式有点困惑。您对该解决方案有什么建议吗?谢谢。
  • 我建议使用:- var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.post("/cities", function(){ console.log(req.body); });这将在帖子中发送请求时起作用(x-www-form-urlencode)
【解决方案2】:

而不是做:

console.log(res.body); //I'm getting nothing

我认为您必须将回复发送为res.send('success')。或者您可以尝试再次发送发布的值进行测试:

res.send(data);

喜欢:

var query = connection.query('INSERT INTO table SET ?', data, function(err, res) {
    if (err) {
        console.log(err);
    } else {
        console.log('success');  
        res.send(res.insertId);  
    }
});

【讨论】:

  • 当我尝试访问 api(城市)时,出现 TypeError: Cannot read property 'city' of undefined error :/ 这是数据对象的第一个属性。
猜你喜欢
  • 2016-02-08
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 2011-12-20
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 2017-11-22
相关资源
最近更新 更多