wolf47
@wolf47
Айтишник, немного програмирую на JS

Как прикрепить и открепить машину к водителю?

Для приложения такси, необходимо закрепить авто за водителем, историю водителей необходимо сохранить в коллекцию водителей. Не могу в голове правильно выстроить логику. Помогите плз.

Водители
23rMPkO.png
Авто
O55k0gQ.png

Модель
var DriversSchema = new Schema({
    name: {
        type: String,
        required: true,
        trim: true,
        unique: true,
        dropDups: true
    },
    id: {
        type: Number,
        required: true,
        unique: true,
        dropDups: true
    },
    car: {
        type: Schema.ObjectId,
        ref: 'Car'
    }
});


Авто
var CarsSchema = new Schema({
    number: {
        type: String,
        unique: true,
        dropDups: true,
        required: true
    },
    model: {
        type: String,
        required: true
    },
    mileage: Number,
    color: String,
    isBusy: {
        type: Boolean,
        default: false
    },
    drivers: [{
        date: Date,
        driver: {
            type: Schema.ObjectId,
            ref: 'Driver',
            required: true
        }
    }]
});


Нахожу водителя и сохраняю копию авто
$scope.findOne = function() {
      Drivers.get({
        driverId: $stateParams.driverId
      }, function(driver) {
        console.log('driver ', driver);
        $scope.driver = driver;
        $scope.oldCar = driver.car;
        $scope.cars.unshift(driver.car);
      });
    };


Обновляю документ
$scope.update = function(isValid) {
      if (isValid) {
        var driver = $scope.driver;
        if (!driver.updated) {
          driver.updated = [];
        }
        driver.updated.push(new Date().getTime());
        driver.user = MeanUser.user;
        driver.acl = MeanUser.acl;
        console.log('update driver ', driver);
        if(driver.car){
          driver.car.isBusy = true;
        }
        driver.$update(function() {
          if($scope.oldCar){
            updateCar($scope.oldCar);
          }
          
          $location.path('drivers/' + driver._id);
        });
      }
      else {
        $scope.submitted = true;
      }
    };

    function updateCar(oldCar) {
      Cars.get({carId: oldCar._id}, function (car) {
        car.isBusy = false;
        car.$update(function (response) {
          console.log('OldCar updated ', response);
        })
      });
    }


Как сделать смену авто, сохранять водителей которые ранее ездили на ней ?
  • Вопрос задан
  • 906 просмотров
Решения вопроса 1
@LiguidCool
По моему задача больше SQL.
3 таблицы - водители, тачки, ид водителя - ид тачки - время.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы