我开始使用NodeJS进行冒险。我选择带有mongoose数据库的快速Web框架。作为我的前端的一部分,我正在使用AngularJS。
首先是前端,基本形式args传递给/ api / user。
$scope.form = {};
$scope.submitUser = function () {
console.log($scope.form);
$http.post('/api/user', $scope.form).
success(function(data) {})
.error(function(data) {});
};
$ scope.form等于:
Object {name: "foo", surname: "bar", email: "foobar@bar.foo"}
然后我们得到了后端,我从默认用户架构开始:
var userSchema = new mongoose.Schema({
name : String,
surname : String,
email : String
});
var User = mongoose.model('User', userSchema);
api post handler:
app.post('/api/user', function (req, res) {
User.create({
name : req.name,
surname : req.surname,
done : false
}, function(err, user) {
if (err)
res.send(err);
res.json(user);
});
});
而不是对象的结果只是__v:
的id__v: 0
_id: "536e218351b1182d0f000001"
PS。这个是神奇的,我完全不知道为什么会这样: __v和_id之上的那些记录不会被保存在任何地方(显示集合,并且每个结果上的find()为null)。但是当我跑步时
User.find(function(err, users) {
if (err)
res.send(err)
res.json(users);
我得到的记录很少(先前尝试传递此表单),其中包含__v和_id。
Connection看起来像这样:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:1/test');
感谢您的任何提示,解释。抱歉我缺乏知识,但我真的很努力。
祝你有愉快的一天! ;)
答案 0 :(得分:2)
假设您从客户端发送POST的正文(有效负载)中的json对象,服务器应该将该值作为req.body.name访问,而不是req.name
app.post('/api/user', function (req, res) {
User.create({
name : req.body.name,
surname : req.body.surname,
done : false
}, function(err, user) {
if (err)
res.send(err);
res.json(user);
});
});
确保将身体解析器中间件传递给表达:
var express = require('express')
var app = express()
app.use(express.bodyParser()); // for express 3.x
或表达4.x
var express = require('express')
var bodyParser = require('body-parser')
var app = express()
app.use(bodyParser()); // for express 4.x
答案 1 :(得分:0)
在我的情况下,它不起作用。为什么呢?
我从 req.body.name
获取值如果我记录 console.log(req.body.name); 我在控制台上获取值。
POST:
{ name: 'typing any name', status: null }
typing any name
因此我的前端(angular.js),表单和后端(node.js,express,mongoose)之间的工作流似乎有效。现在我 POST 这个值,但是我的mongoDB中有一个空对象。
<强> {&#34; _id&#34;:&#34; 543a50a974de6e2606bd8478&#34;&#34; __ V&#34;:0} 强>
app.post('/api/offers', function (req, res){
var offer;
console.log("POST: ");
console.log(req.body);
console.log(req.body.name);
offer = new OfferModel({
name: req.body.name,
value: req.body.value,
title: req.body.title,
content: req.body.content,
});
offer.save(function (err) {
if (!err) {
return console.log("created offer" + req.body.name);
} else {
return console.log(err);
}
});
return res.send(offer);
});
以下是模型:
var offerSchema = mongoose.Schema({
offer : {
name : String,
value : String,
title : String,
content : String,
image : String,
start : String,
end : String,
targets : String,
beacons : String,
published : String
}
});
var OfferModel = mongoose.model('Offer', offerSchema);