POST 到 MongoDB 在 MongoLab 上使用 mongoose 和 express

POST to MongoDB on MongoLab using mongoose and express

我正在尝试向 mongolab.com 上的数据库添加一些数据 我有一个使用 node.js

编写的应用程序

index.js的一部分是:

var express = require('express');
var app = express();
var router = express.Router();
var mongoose = require('mongoose');
var StacjaMeteo = require('./models/StacjaMeteo.js');
mongoose.connect('mongodb://user:xxxxxxxx@ds041484.mongolab.com:41484/stacjameteo', function(err) {
  if(err) {
    console.log('connection error', err);
  }
  else {
    console.log('connection with database successful');
  }
});


app.set('port', (process.env.PORT || 5000));



app.post('/meteo', function(req, res, next) {
  StacjaMeteo.create(req.body, function(err, post) {
    if(err) return next(err);
    res.json(post);
  });
});

猫鼬模型如下所示:models/StacjaMeteo.js

var mongoose = require('mongoose');

var StacjaMeteoSchema = new mongoose.Schema({
    winddir: Number,
    windspeedmph: Number,
    windgustmph: Number,
    windgustdir: Number,
    humidity: Number,
    tempf: Number,
    pressure: Number,
    updated_at: {type: Date, default: Date.now}
});

module.exports = mongoose.model('StacjaMeteo', StacjaMeteoSchema);

使用应用程序午餐后,我得到了与数据库连接成功的信息。但是当我尝试使用 Postman 向它发送一些数据时:

POST /meteo HTTP/1.1
Host: localhost:5000
Cache-Control: no-cache
Postman-Token: 39ec83eb-00e9-3e69-875e-ef8f2eaf2b1a
Content-Type: application/x-www-form-urlencoded

winddir=0&windspeedmph=0&windgustmph=0&humidity=0&tempf=0&pressure=0

我收到回复:

{
  "__v": 0,
  "_id": "567012cbc1e781f67706f9ad",
  "updated_at": "2015-12-15T13:16:59.964Z"
}

所以除了 id 和 updated_at 之外什么都没有,数据库中没有添加任何新内容。

我做错了什么?

你没有告诉 express 如何解析你的请求正文。

在您的快速配置中,添加这两行

var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: false}));

有关扩展关键字的更多信息:https://www.npmjs.com/package/body-parser#extended