【问题标题】:How to append form fields using angular and how to insert value in DB如何使用角度附加表单字段以及如何在数据库中插入值
【发布时间】:2017-08-21 04:13:34
【问题描述】:

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

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

我的html视图如下

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

我希望结果是这样的:

请告诉我该怎么做。

提前致谢。

【问题讨论】:

  • 也许这个视频会对你有所帮助link
  • 感谢视频链接@ThanhTùng 我知道如何在数据库中插入数据,但我想知道,当我不止一次附加书籍部分时,附加元素的ng-model 将不止一次,所以我需要创建它的数组以在数据库中提交它......所以我想知道如何在数据库中插入附加数据
  • @SaurabhSharma 您需要 nodejs 代码或 Angular 代码方面的帮助吗?您能否将所需数据从 UI 发送到节点后端服务器?
  • 基本上我在 Nodejs 中需要帮助......当我只有一本书时,我可以在 DB 中插入数据......如果我有多本书,那么我需要帮助来插入数据。
  • book_namebook_author html 元素将在点击 Add More Books 按钮时附加

标签: angularjs arrays node.js insert


【解决方案1】:

你能检查一下这是否有帮助 SubjectBooks 是猫鼬模式。通过 subjectName 将新书追加到主题中的查询。如果您想查找具有任何其他参数(如 _id)的对象,您可以更改更新方法的第一个参数。

节点代码放在这里

已编辑

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);
    });
});

我创建的 Angular 代码

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"
                     });
    }
}
}]);

这应该有助于将书籍推送到主题书籍数组中。

你可以参考这个问题

【讨论】:

  • 嘿,我不想更新文档。我希望当我在 DB 中发布新记录时,然后执行与 update 相同的操作
  • 您需要的是更新查询中的{upsert:true} 标志。如果在数据库中找不到文档,它会插入新文档。
  • @SaurabhSharma 我已经更新了我的解决方案,您能否验证这是否是您需要的。现在如果有新的主题数据进来,它正在插入。
  • 我缺少的一件事是 $each 修饰符,因为书籍数组被推入另一个包含多个书籍对象的对象中。
  • 您好,我浏览了您上面给出的代码并分析了更新现有文档。但我没有现有的文件。我正在插入并使用post 方法。或者可能是我没有得到你想说的。
猜你喜欢
  • 2021-09-14
  • 2018-01-28
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 2016-08-07
  • 2020-12-17
  • 2018-10-21
  • 2018-01-25
相关资源
最近更新 更多