Приветствую.
Помогите разобраться с проблемой.
Мне необходимо обновить сохранить в базу большое количество данных с уникальным ключом. Соответственно, при совпадении ключа, пропустить или обновить данные (без разницы).
Бекенд на Nest.js и Prisma orm.
Т.к. данных слишком много (более 500 тыс. строк), я разбиваю их на массивы по 500 строк.
CreateMany в данном случае не подходит, т.к. если база будет содержать ключ из массива, то не сохранится весь массив.
В typeorm я бы просто использовал просто upsert, а вот prisma в upsert не умеет вставлять массивы.
Я пробую перебрать массив и вставить данные, но получаю ошибку по количеству соединений.
Timed out fetching a new connection from the connection pool. More info: pris.ly/d/connection-pool (Current connection pool timeout: 10, connection limit: 9)
При условии, что это один пользователь, а нужно, чтобы такие данные могли грузить множество пользователей.
Как правильно обновлять большое количество данных через Prisma ?
Мой код:
newArr?.map(async (arr) => {
arr?.map(async (el) => {
await this.prisma.payments.upsert({
where: { transaction_id: el.transaction_id },
create: el,
update: el,
});
});
}),