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
我正在尝试向 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