sql >> Databáze >  >> RDS >> PostgreSQL

Sequelize upsert() se nikdy neaktualizuje a pouze vloží

Ve svém příkladu upsert() neuvádíte id vstupu do metody upsert. To znamená, že sequelize nemůže odpovídat id na řádek (protože id není definován) a proto vloží nový řádek.

I když použijete jiný primární klíč, musí se vždy jednat o vlastnost, aby se shodoval, protože sequelize používá primární klíč k vyhledání existujícího řádku.

createOrUpdateTransaction: {
    type: Transaction,
    args: {
        // Omitted code...
    },
    resolve: (root, args) => {
        return db.models.transaction.upsert({
            // The id property must be defined in the args object for 
            // it to match to an existing row. If args.id is undefined 
            // it will insert a new row.
            id: args.id, 
            time: new Date().toString(),
            payerAccountNumber: args.payerAccountNumber,
            recipientAccountNumber: args.recipientAccountNumber,
            amount: args.amount,
            currency: args.currency,
            paymentMethod: args.paymentMethod,
            cardNumber: args.cardNumber,
            cardName: args.cardName,
            cardNetwork: args.cardNetwork,
            // Omitted fields ...
        })
    }
}



  1. Chyba MySQL/Amazon RDS:nemáte SUPER oprávnění...

  2. PL/SQL:ORA-00904:neplatný identifikátor &PL/SQL:Příkaz ignorován&PLS-00364:použití proměnné indexu smyčky je neplatné

  3. doktrína 2 kde podmínka bez srovnání

  4. Můžeme použít rámec Meteor s databází mysql