Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS/Angular-从表单添加输入_Javascript_Angularjs_Node.js_Forms_Mongodb - Fatal编程技术网

Javascript NodeJS/Angular-从表单添加输入

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

我正在使用带有角度形状的NodeJS添加一个新条目。但是,当我单击“创建”时,它不会将数据输入数据库。我添加了angular.toJson来将输入转换为json,以便输入Mongodb,但它不起作用。如何修复此代码以将表单条目数据添加到数据库

角度加法控制器

.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,通过你的编辑,我让它工作了。非常感谢你!