Нужно записать в базу такой запрос:
parseCarList =
[ { car_name: 'WV', parent_Id: null },
{ car_name: 'Skoda', parent_Id: 'WV' },
{ car_name: 'Opel', parent_Id: 'Skoda' },
{ car_name: 'Ford', parent_Id: 'Skoda' },
{ car_name: 'Peugeot', parent_Id: 'Skoda' },
{ car_name: 'GM', parent_Id: 'WV' },
{ car_name: 'Opel', parent_Id: 'GM' }, //Ошибка
{ car_name: 'Ford', parent_Id: 'GM' }, //Ошибка
{ car_name: 'Porche', parent_Id: 'GM' },
{ car_name: 'Peugeot', parent_Id: 'GM' }, //Ошибка
{ car_name: 'Tesla', parent_Id: 'Peugeot' } ]
Не будем в даваться в иерархию брендов и их реальной причастности друг к другу.
Задача по циклу писать в базу производителя и его родителя если таковой имеется.
parseCarList.forEach(item => {
if (item.car_name) { //если есть орг нейм
db.cars.findAll({where: {name: item.car_name}})
.then(function (validCar) {
if (validCar.length > 0) { // если нашли
item.carid = validCar[0].dataValues.id;
//тут еще будет записываться в базу родитель
}
if (validCar.length < 1) { // если не нашли
createNewCar(item)
.then(function (createdCar) {
item.carid = createdCar.dataValues.id;
//тут еще будет записываться в базу родитель
})
.catch(error => console.log(error));
}
})
.catch(error => console.log('Validation: ' + item.car_name + ' found Error: ' + error));
}
});
Все пишет прекрасно (все машины в базу пишутся) кроме тех дублирующих позиций, что я пометил "Ошибка", а ошибку я получаю т.к. запросы идут асинхронно и к тому моменту как проходит цикл, база не успевает создать ранее созданного производителя и дублирующая надпись не находя его в базе пытается сделать его заного, но видимо к тому моменту как уже начнет делать в базе такая запись уже будет, поле car_name unique: true и я получаю ошибку:
New Car Opel not created, Error: SequelizeUniqueConstraintError: Validation error
Красивый вид ошибок я еще допилю, не обращаем внимания.
Выход писать синхронно и ждать каждую созданную машину? А если на какой то машине база застрянет?
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Имеется страница, на которой находится n-ое кол-во tabs(вкладок), на каждой вкладке есть автоматически создаваемый элемент в виде кнопки "Удалить"...
Нужно сделать трёхуровнёвое меню для интернет-магазина, которое будет открываться по клику