node.js - 在 AngularJS、NodeJS、MongoDB、Mongoose 和 ExpressJS 中使用单个表单发布到多个集合

标签 node.js angularjs mongodb express mongoose

我想要一个表单来发布到 mongo 中的两个集合。

HTML 看起来是什么样的

<form>
   ...Field1
   ...Field2
   ...Field3
   ...Field4
</form>

Controller 是什么样的

app.controller.....

   $scope.var = {$scope.fields}.....
   $http post...
      ...Field 1 & Field 2 to Mongo Collection 1
      ...Field 3 & Field 4 to Mongo Collection 2

基本上消除了使用 2 个单独的表单来提供 2 个集合的需要。这可能吗?

提前致谢

蔡斯

最佳答案

这完全取决于 HTTP 请求的服务器端处理。假设您定义源数据如下:

var composite = {'col1' :{'field1':value, 'field2':value}, 
'col2' :{'field3':value, 'field4':value}};

您可以编写服务器端函数:

var mongoose = require('mongoose'), Col1 = mongoose.model('Col1'), Col2 = mongoose.model('Col2');

exports.compositeUpdate = function(req, res, next) {
    var template1 = req.body.col1;
    var template2 = req.body.col2;
    // you could also do template1 = new Col1(req.body.col1) and use template1.save()
    var compositeResponse = {};
    Col1.create(template1, function(err, result) {
        // omitting error handling
        compositeResponse.col1 = result;
        Col2.create(template2, function(err, result2) {
            compositeResponse.col2 = result2;
            res.json(compositeResponse);
        });
    });
};

关于node.js - 在 AngularJS、NodeJS、MongoDB、Mongoose 和 ExpressJS 中使用单个表单发布到多个集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26224219/

相关文章:

node.js - 如何将 NPM 配置为信任防火墙颁发者以进行 HTTPS 代理?

javascript - AngularJS $scope.$watch 一个选择输入的属性 ngModel

javascript - 如何更改范围 slider 的轨道颜色?

angularjs - 在淡入另一个元素之前完全淡出元素

javascript - 如何查询 MongoDB 的 2 个范围和文本搜索?

arrays - Mongoose 创建包含对象数组的记录(转换为数组失败)

node.js - require.resolve() 参数中的尾部斜线是什么意思?

Javascript/Node.js "Function name"不是一个函数

javascript - Promise.all 与 try/catch 模拟

java - Java ORM for MongoDB 的开销是多少