Я использую sequelize (5.21.6) с sqlite3 (^ 4.1.1).
У меня есть две модели A и B, между которыми существует отношение многих ко многим.
Я хочу выполнить массовую вставку или обновление в сводную таблицу.
Для достижения этой цели я создал третью модель сводной таблицы, назовем ее AB.
Итак, вот как я пытаюсь объединить данные в сводную таблицу.
db.AB.bulkCreate([array of values], {
updateOnDuplicate: ['aId', 'bId', 'updatedAt']
});
Ошибка, которую я получаю:
{ Error: SQLITE_ERROR: near ")": syntax error
[0] errno: 1,
[0] code: 'SQLITE_ERROR',
[0] sql: INSERT INTO `AB` (`id`,`aId`,`bId`,`createdAt`,`updatedAt`) VALUES (19,1,1,'example',\'2020-04-15 15:18:59.000 +00:00\',\'2030-04-15 15:18:59.000 +00:00\'),(20,2,2,\'2030-04-15 15:19:49.000 +00:00\',\'2030-04-15 15:19:49.000 +00:00\') ON CONFLICT () DO UPDATE SET `aId`=EXCLUDED.`aId`, `bId`=EXCLUDED.`bId`,`updatedAt`=EXCLUDED.`updatedAt`;'
}
Определение моей модели AB:
'use strict';
module.exports = (sequelize, DataTypes) => {
const AB = sequelize.define('AB', {
id: {
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
autoIncrement: true
},
aId: DataTypes.INTEGER,
bId: DataTypes.INTEGER
}, {});
AB.associate = function (models) {
// associations can be defined here
AB.belongsTo(models.A, { foreignKey: 'aId' });
AB.belongsTo(models.B, { foreignKey: 'bId' });
};
return AB;
};