Sequelize Error: Named bind parameter "$amount" has no value in the given object

38 Views Asked by At

This is my sequelize code:

const insertQuery = `
    INSERT INTO transaction (amount, company_id, user_id, journal_id, type, account_id, plaid_transaction_id)
    SELECT $amount, $company, $user_id, $journal_id, $type, $account_id, $plaid_transaction_id
    WHERE NOT EXISTS (
      SELECT 1 FROM transaction WHERE plaid_transaction_id = $plaid_transaction_id
    )
    RETURNING id, amount, company_id, user_id, journal_id, type, account_id, plaid_transaction_id;
  `;


const bindParams: any = transactionData.map(({ amount, company_id, user_id, journal_id, type, account_id, plaid_transaction_id }) => ({
  amount,
  company: company_id,
  user_id,
  journal_id,
  type,
  account_id,
  plaid_transaction_id,
}));

 // Generate the SQL query with interpolated bind parameters
 const resolvedQuery = insertQuery.replace(/\$\w+/g, match => {
  const paramName = match.substring(1); // Remove the $ sign
  const paramValue = bindParams[0][paramName]; // Assuming the first element contains all params
  return sequelize.escape(paramValue); // Ensure proper escaping
});

console.log("Resolved SQL Query:", resolvedQuery);

 

  const insertedRows = await sequelize.query(insertQuery, {
    bind: bindParams,
    type: QueryTypes.INSERT,
    transaction: transactionObj,
  });

  return insertedRows;

I'm getting error: Named bind parameter "$amount" has no value in the given object.

This is my resolved sql query (which verifies that the data I'm passing is correct):

INSERT INTO transaction (amount, company_id, user_id, journal_id, type, account_id, plaid_transaction_id)
    SELECT 89.4, 42, 48, 293, 'debit', 1858, 'rkA3lL4bxxf4Jvv9x4gaibxXQjlaLlC7kb4mL'
    WHERE NOT EXISTS (
      SELECT 1 FROM transaction WHERE plaid_transaction_id = 'rkA3lL4bxxf4Jvv9x4gaibxXQjlaLlC7kb4mL'
    )
    RETURNING id, amount, company_id, user_id, journal_id, type, account_id, plaid_transaction_id;
0

There are 0 best solutions below