Comment mettre à jour plusieurs lignes avec des données différentes dans Prisma
P粉478445671
P粉478445671 2023-12-25 13:03:44
0
1
616

Quelle est la meilleure façon de mettre à jour de nombreux enregistrements avec des données différentes ? C'est ce que je fais

const updateBody = JSON.parse(req.body);

      try {
        for (let object of updateBody) {
          await prisma.comissions.upsert({
            where: {
              producer: object.producer,
            },
            update: {
              rate: object.rate,
            },
            create: object,
          });
        }

Je pourrais le mettre à jour mais cela prendrait beaucoup de temps pour le faire. Je sais transaction, mais je ne sais pas comment l'utiliser.

P粉478445671
P粉478445671

répondre à tous(1)
P粉354602955

Il existe deux façons d'utiliser les requêtes de transaction dans Prisma.

Opérations séquentielles : Transmettez un tableau de requêtes client Prisma à exécuter séquentiellement au sein d'une transaction.

Transactions interactives : Transmettez une fonction pouvant contenir du code utilisateur, y compris des requêtes client Prisma, du code non Prisma et d'autres flux de contrôle à exécuter dans la transaction.

Dans notre cas, nous devrions utiliser une transaction interactive car elle contient du code utilisateur, pour utiliser la fonction de rappel dans la transaction Prisma, nous devons ajouter une fonction de prévisualisation au fichier Prisma.schema

generator client {
  provider        = "prisma-client-js"
  previewFeatures = ["interactiveTransactions"]
}
prisma.$transaction(async(prisma) => {
  try {
        for (let object of updateBody) {
          await prisma.comissions.upsert({
            where: {
              producer: object.producer,
            },
            update: {
              rate: object.rate,
            },
            create: object,
          });
        }
});
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal