如何使用angular附加表单字段以及如何在DB中插入值

时间:2017-03-28 07:48:39

标签: angularjs arrays node.js insert

我使用express和mongoose来保存mongodb中的数据。 我正在创建Node API,下面是我的Mongo Schema。

var bookSchema=new Schema({ 
    subject_name:{type:String}, 
    books:[{book_name:String, book_author:String}] 
}); 

我的html视图如下

enter image description here

我想针对单个主题名称附加多个书籍。所以我想知道如何使用Angularjs多次附加Books部分以及如何将其值存储在mongodb中。

我希望结果是这样的:

enter image description here

请让我怎么做。

先谢谢。

1 个答案:

答案 0 :(得分:0)

嘿,你可以检查这是否有助于SubjectBooks是mongoose架构。通过subjectName将新书附加到主题中的查询。如果要查找具有任何其他参数(如_id。

)的对象,可以更改update方法的第一个参数

节点代码在这里

<强> EDITED

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

/*....mongoose connection creation code goes here...*/

var bookSchema=new Schema({subject_name:{type:String},books[{book_name:String, book_author:String}]
});
var SubjectBooks = mongoose.model('<collection_name>', bookSchema);

app.post('<URL mapping goes here>',function(req,res){
    var subject = req.body; //You have to use body-parser
    var subjectName = subject.subject_name;
    var subjectModel = new SubjectBooks(subject);
    subjectModel.save(function (err,mongRes) {
       if(err){
           res.send(err);
       }
       res.json(mongRes);
    });
});

我创建的角色代码

app.controller("mainController",["$scope",'mainService',function($scope,mainService){
$scope.subjectBookCatalogue = {
    subject_name: "",
    books:[{
        book_name:"",
        book_author:""
    }]
};

$scope.saveSubjects = function (data) {
    mainService.saveSubjects(data).then(function(response){
        console.log(response.data);
    },function(response){
    });
};

$scope.subjects = [];
$scope.fetchSubjects = function () {
    mainService.getAllSubjects().then(function(response){
        console.log(response.data);
        $scope.subjects = response.data;
    },function(response){
    });
};


$scope.fetchSubjects();

$scope.submitForm = function(){
    console.log($scope.subjectBookCatalogue);
    $scope.saveSubjects($scope.subjectBookCatalogue);
}
}]);

app.factory("mainService",["$http",function($http){
return {
    saveSubjects : function(data){
        return $http({
            method:"POST",
            url: "http://localhost:3000/v1/subject/"+data.subject_name,
            data:data,
            headers: {
                'Content-Type': 'application/json'
            }
        });
    },
    getAllSubjects : function(){
        return $http({
                        method:"GET",
                        url:"http://localhost:3000/v1/subjects"
                     });
    }
}
}]);

这有助于将书籍推入主题书籍阵列。

您可以参考此问题