sql >> Databasteknik >  >> RDS >> PostgreSQL

Sequelize upsert() uppdateras aldrig och bara infogar

I exemplet upsert() anger du inte id av inträdet i upsertmetoden. Detta innebär att uppföljare inte kan matcha id på en rad (eftersom id är odefinierad) och därför infogar den en ny rad.

Även om du använder en annan primärnyckel måste den alltid vara en egenskap för att den ska matcha eftersom sequelize använder primärnyckeln för att söka efter en befintlig rad.

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. LOAD DATA LOCAL INFILE ger felet Det använda kommandot är inte tillåtet med denna MySQL-version

  2. Hur väljer man flera rader efter primärnyckel med flera kolumner i MySQL?

  3. Förberedd sats fungerar inte med ALTER-tabellfrågor

  4. Hur ersätter man NULL med 0 i frågan?