我是新手,正在构建一个测试页面,以便在构建我的实际项目之前理清我的理解。现在,我只是尝试接受用户输入,将其保存到数据库并打印出来。数据应保存在基本的Mongoose模型中,测试。虽然所有路线都是开放的,但不是打印用户输入的内容,而是按以下格式打印:
{"_id":"55c3925b48b9dba0d896be40","__v":0}
我怀疑它与index.js中此代码段的第二行有关:
router.post('/survey', function(req, res, next) {
var test = new Test(req.body);
test.save(function(err,test) {
if(err) {
return next(err);
}
res.json(test);
});
});
module.exports = router;
相关代码:
所有index.js:
var express = require('express');
var router = express.Router();
/* GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
//set up routes
var mongoose = require('mongoose');
var Test = mongoose.model('Test');
router.get('/survey', function(req, res, next) {
Test.find(function(err, tests) {
if(err) {
return next(err);
}
res.json(tests);
});
});
router.post('/survey', function(req, res, next) {
var test = new Test(req.body);
test.save(function(err,test) {
if(err) {
return next(err);
}
res.json(test);
});
});
module.exports = router;
Tests.js(型号):
var mongoose = require('mongoose');
var TestSchema = new mongoose.Schema({
'name': String,
});
module.exports = mongoose.model('Test', TestSchema);
角度代码的相关位:
routerApp.factory('tests', ['$http', function($http){
var o = {
tests: []
};
o.getAll = function() {
return $http.get('/survey').success(function(data){
console.log('get all sees data as:' + data);
angular.copy(data, o.tests);
});
};
o.create = function(test) {
console.log('create sees test as' + test);
return $http.post('/survey', test).success(function(data){
o.tests.push(data);
console.log('Data:' + data);
});
};
return o;
}]);
routerApp.controller('FormCtrl', ['$scope', 'tests',
function($scope, tests){
$scope.test = tests.tests;
$scope.addTest = function(){
if(!$scope.text || $scope.text === '') { return; }
tests.create({
name: $scope.text
});
$scope.text = '';
};
}
]);
我怀疑这是一个不了解什么样的对象需求的问题,但我并不完全正面。我如何使这个代码以mongoose模型中描述的格式保存数据?
答案 0 :(得分:0)
如果您在文档对象(res.json(test.toObject())
)上调用.toObject()
,则应该返回一个包含该文档中数据的普通对象。
答案 1 :(得分:0)
尝试console.log(req.body)
。如果它是空的,那么在定义路由之前尝试在某处添加app.use(bodyParser.json())
(并确保首先使用npm和require
安装它。)
当您发布某种JSON时,默认情况下它在req.body
中不可用。您需要bodyParser
来解析传入的数据,并使其在req.body
中可用。有关详细信息,请参阅https://medium.com/@adamzerner/how-bodyparser-works-247897a93b90。