将多个对象从Angular保存到Sequelize

时间:2017-03-06 19:29:57

标签: javascript angularjs sequelize.js meanjs

我使用mean.js来创建一个系统,我更改了sequelize的猫鼬部分,我试图通过sequelize将多个对象从Angular保存到我的数据库。

我按照此answer在Dia(Day)选项上动态创建多个输入,用于多个计划。enter image description here  我的控制器是这样的:

$scope.horarios = [];

$scope.itemsToAdd = [{
  Day: '',
  StartHour: '',
  EndHour: ''
}];

$scope.add = function(itemToAdd) {

  var index = $scope.itemsToAdd.indexOf(itemToAdd);

  $scope.itemsToAdd.splice(index, 1);

  $scope.horarios.push(angular.copy(itemToAdd))
};

$scope.addNew = function() {

  $scope.itemsToAdd.push({
    Day: '',
    StartHour: '',
    EndHour: ''
  });
  console.log($scope.itemsToAdd);
};

并查看

<div class="col-xs-12" style="padding: 0" ng-repeat="itemToAdd in itemsToAdd">
  <div class="form-group col-xs-12 col-sm-5" >
    <label for="Days">Dia</label> <select class="form-control col-xs-12 col-sm-6" data-ng-model="itemToAdd.Day" id="Days" name="Days">
      <option value="">---Seleccione uno---</option>
     ....
    </select>
  </div>
  <div class="form-group col-xs-5 col-sm-3">
    <label class="control-label" for="startHour">Hora Inicio</label> <input class="form-control" id="startHour" name="startHour" ng-model="itemToAdd.StartHour" type="time">
  </div>
  <div class="form-group col-xs-5 col-sm-3">
    <label class="control-label" for="endHour">Hora Termino</label> <input class="form-control" id="endHour" name="endHour" ng-model="itemToAdd.EndHour" type="time">
  </div>
  <div class="col-xs-2 col-sm-1">
    <button ng-click="addNew()" class="btn btn-success" style="position: relative; top:26px"><i class="glyphicon glyphicon-plus"></i></button>
  </div>
</div>

然后我在Angular的客户端使用我的两个控制器:

// Create new course
$scope.create = function( isValid ) {
  // Create new course object
  var course = new Courses( $scope.course );
  course.Schedule = $scope.itemsToAdd;

  console.log($scope.course);
  // Redirect after save
  course.$save( function( response ) {
    $scope.closeThisDialog();
    notify( 'Genial. El Curso ha sido registrada exitosamente' );
    // Clear form fields
    $scope.course = '';
    $scope.schedule = '';
  }, function( errorResponse ) {
    $scope.error = errorResponse.data.message;
  } );
};

并且续集:

exports.create = function(req, res) {
var schedule = req.body.Schedule;
req.body.schedule = undefined;
// req.body.userId = req.user.id;
db.Course.create(req.body)
    .then(function(course) {
        if (!course) {
            return res.send('users/signup', {
                errors: 'Could not create the course'
            });
        } else {
            schedule.CourseId = course.dataValues.id;

            db.Schedule.create(schedule)
                .then(function(schedule) {
                    for (var i = schedule.dataValues.length - 1; i >= 0; i++) {
                        course.schedule = schedule.dataValues[i];
                    }
                    // course.schedule = schedule.dataValues;
                })
                .catch(function(err) {
                    return res.status(400).send({
                        message: errorHandler.getErrorMessage(err)
                    });
                });

            return res.jsonp(course);
        }
    })
    .catch(function(err) {
        return res.status(400)
            .send({
                message: errorHandler.getErrorMessage(err)
            });
    });

};

但老实说,我不知道如何保存它,或者我的Angular控制器甚至是正确的方法。希望你能帮助我,或者告诉我如何做到这一点。

1 个答案:

答案 0 :(得分:0)

除了更新单个实例外,您还可以一次创建,更新和删除多个实例。您正在寻找的功能称为

Model.bulkCreat

http://docs.sequelizejs.com/en/2.0/docs/instances/#working-in-bulk-creating-updating-and-destroying-multiple-rows-at-once