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