javascript - 使用 body-parser 和 express 解析嵌套的 JSON

标签 javascript node.js mongodb mongoose body-parser

我有一个 iOS 应用程序正在向网络服务器发送 JSON 数据包。 Web 服务器代码如下所示:

var express = require('express');
var bodyParser = require('body-parser');
var mongoose = require('mongoose');
var app = express();
mongoose.connect('mongodb://localhost/test');

var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function (callback) {
  console.log("MongoDB connection is open.");
});

// Mongoose Schema definition
var Schema = mongoose.Schema;
var LocationSchema = new Schema({
    X: Number,
    Y: Number,
    Orientation: Number,
    UserID: String,
    Time: String
});

// Mongoose Model definition
var LocationsCollection = mongoose.model('locations', LocationSchema);

// create application/json parser
var jsonParser = bodyParser.json();

// URL management
app.get('/', function (req, res) {
    res.sendFile(__dirname + '/index.html');
});

app.post('/update', jsonParser, function (req, res) {
    if (!req.body) return res.sendStatus(400);
    else {
        console.log(req.body);
    }
});

// Start the server
var server = app.listen(3000, function () {
  var host = server.address().address
  var port = server.address().port
  console.log('App listening at %s:%s',host, port)
});

关键部分是 app.post 方法,它处理从我的 iOS 应用程序发送的传入 http 请求。目前,将 req.body 打印到控制台的方法如下所示:

{ 
  datapoint_1:
   { timestamp: '2015-02-06T13:02:40:361Z',
     x: 0.6164286615466197,
     y: -0.6234909703424794,
     id: 'B296DF8B-6489-420A-97B4-6F0F48052758',
     orientation: 271.3345946652066 },
  datapoint_2:
   { timestamp: '2015-02-06T13:02:40:961Z',
     x: 0.6164286615466197,
     y: -0.6234909703424794,
     id: 'B296DF8B-6489-420A-97B4-6F0F48052758',
     orientation: 273.6719055175781 }
}

因此,您可以看到请求是一个嵌套的 JSON 对象。理想情况下,我想遍历请求对象(即数据点)并将它们插入 mongoDB 数据库(通过 mongoose)。但是,我似乎无法弄清楚如何使用 req.body 做很多事情。我似乎无法创建循环来遍历请求或如何正确解析嵌套的 JSON 文件以使其与 Mongoose 模式匹配。谁能就如何将这些数据点插入 Mongoose 数据库提供一些指导?

最佳答案

设置body-parser's 属性扩展为 true 以允许解析嵌套对象。

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

app.use(bodyParser.urlencoded({
    extended: true
}));

关于javascript - 使用 body-parser 和 express 解析嵌套的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28372285/

相关文章:

node.js - Socket.io 发出欢迎来到 socket.io 消息

javascript - 如何在 Mongoose 中为同一字段返回多个计数?

javascript - 由于代理问题,Node.js 脚本失败

javascript - 如何使 axios 返回正确类型的缓冲区?

javascript - MySQL 循环查询 Javascript 不起作用

mongodb - scala mongodb IN过滤器使用

javascript - 使用 mongoose 在 MongoDB 中批量更新插入

JavaScript 警报没有响应

javascript - 使用 jQuery 提交表单无法从弹出窗口中运行

javascript - 如何在 jQuery/JavaScript Bootstrap 中插入 PHP 变量?