PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Sequelize upsert() non aggiorna mai e solo inserisce

Nel tuo esempio upsert() non stai fornendo l'id dell'ingresso nel metodo upsert. Ciò significa che sequelize non può corrispondere all'id in una riga (perché l'id è undefined) e quindi inserisce una nuova riga.

Anche se utilizzi una chiave primaria diversa, deve sempre essere una proprietà affinché corrisponda poiché sequelize utilizza la chiave primaria per cercare una riga esistente.

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 ...
        })
    }
}