Javascript NodeJS/Angular-从表单添加输入
我正在使用带有角度形状的NodeJS添加一个新条目。但是,当我单击“创建”时,它不会将数据输入数据库。我添加了angular.toJson来将输入转换为json,以便输入Mongodb,但它不起作用。如何修复此代码以将表单条目数据添加到数据库 角度加法控制器Javascript NodeJS/Angular-从表单添加输入,javascript,angularjs,node.js,forms,mongodb,Javascript,Angularjs,Node.js,Forms,Mongodb,我正在使用带有角度形状的NodeJS添加一个新条目。但是,当我单击“创建”时,它不会将数据输入数据库。我添加了angular.toJson来将输入转换为json,以便输入Mongodb,但它不起作用。如何修复此代码以将表单条目数据添加到数据库 角度加法控制器 .controller('AddNew', function($scope, $http) { $scope.addnew = "Add New item"; $scope.item = {}; $scope.create = f
.controller('AddNew', function($scope, $http) {
$scope.addnew = "Add New item";
$scope.item = {};
$scope.create = function() {
item = $scope.item;
var input = angular.toJson(item);
$http.post("http://localhost:3000/api/book", input);
}
})
NodeJS代码
//Add a new book
app.post("/api/book", function(req, res){
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Cache-Control, Pragma,
Origin, Authorization, Content-Type, X-Requested-With");
res.header("Access-Control-Allow-Methods", "POST");
console.log("Adding new Book: " + req.body.name);
var book = new Book({
name:req.body.name,
isbn: req.body.isbn,
author: req.body.author,
pages: req.body.pages
});
//Saving the model instance to the DB
book.save(function(err, result){
if ( err ) throw err;
res.json({
message:"Successfully added book",
book:result
});
});
});
更新您的请求代码行,如下所示:
$http({
method: 'POST',
url: "http://localhost:3000/api/book",
data: $.param(item),
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
})
并在服务器端包含以下行:
app.use(bodyParser.urlencoded({'extended': 'true'}));
app.use(bodyParser.json());
您需要jquery才能使用$.param
,如果您的项目中没有包含jquery,您可以像这样绑定参数:
'name='+item.name+'&isbn='+item.isbn
请确保在您的express应用程序中定义
body parser
。刚刚注意到一个输入错误:messaage
如果您正在获取req.body,那么它应该可以工作,否则使用bodyparser的节点模块必须在没有jQuery的情况下执行此操作。有一个输入,但它只显示_id和一个“_v”:0。您确定要在服务器端定义主体解析器吗?请与我共享console.log(req.body)的输出。我得到的req未定义。在我的服务器端,我包含了var bodyParser=require('body-parser');并使用app.use(bodyParser.json());你必须在app.post(“/api/book”),function(req,res){
行之后写console.log(req.body)
行,但是如果你已经包括bodyParser,它应该可以工作了。看看我更新的答案。Basaran,通过你的编辑,我让它工作了。非常感谢你!