sql >> Base de Datos >  >> RDS >> PostgreSQL

Sequelize upsert () nunca se actualiza y solo se inserta

En su ejemplo de upsert() no está proporcionando el id de la entrada en el método upsert. Esto significa que la secuencia no puede coincidir con el id a una fila (porque el id no está definido) y por lo tanto inserta una nueva fila.

Incluso si usa una clave principal diferente, siempre debe ser una propiedad para que coincida, ya que sequelize usa la clave principal para buscar una fila existente.

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