我正在开始使用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处理程序:
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 .
连接看起来像这样:
var mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:1/test');
感谢您的任何提示,解释 . 抱歉我缺乏知识,但我真的很努力 .
祝你今天愉快! ;)
2 回答
假设您从客户端发送POST的正文(有效负载)中的json对象,服务器应该将该值作为req.body.name访问,而不是req.name
确保通过正文解析器中间件来表达:
或表达4.x.
在我的情况下,它不起作用 . 为什么?
我从 req.body.name 获得了 Value
如果我记录它 console.log(req.body.name); 我在控制台上获得了值 .
所以我的前端(angular.js),表单和后端(node.js,express,mongoose)之间的工作流程似乎有效 . 现在我 POST 的值,但我在我的mongoDB中得到一个空对象 .
{"_id":"543a50a974de6e2606bd8478","__v":0}
这是模型: