Исключение при выполнении операции Knex - PullRequest
0 голосов
/ 14 июня 2019

Я пытаюсь написать оператор UPDATE с Knex.

SQL, который я хотел бы вывести:

UPDATE customers SET "month_value" = "src"."month_value", "modified" = NOW() FROM ( SELECT COALESCE(SUM("month_value"), 0) AS month_value FROM "customer_products" WHERE "active" = true AND "customer_id" = 111781 ) src WHERE "id" = 111781

Пока это мой JavaScript:

db.knex.table('customers')
      .where('id', '=', ':customerId')
      .from(db.sequelize.knex.raw('(' +
        'SELECT' +
        'COALESCE(SUM("month_value"), 0) AS month_value' +
        'FROM "customer_products"' +
        'WHERE "active" = true' +
        'AND "customer_id" = ?' +
        ') AS src' +
        'WHERE "id" = :customerId', [customerId]))
      .update({'month_value': src.month_value,
               'modified': NOW(),
              })

Однако, это дает мне эту ошибку:

{"message":"ApiErrorMiddleware ReferenceError: src is not defined","level":"info"}
{"message":"UnknownErrorMiddleware ReferenceError: src is not defined","level":"info"}

Что я сделал не так?

1 Ответ

0 голосов
/ 16 июня 2019

Вот что у меня сработало:

db.sequelize.knex.table('customers')
  .where('id', '=', ':customerId')
  .from(db.sequelize.knex.raw('('
    + 'SELECT'
    + 'COALESCE(SUM("month_value"), 0) AS month_value'
    + 'FROM "customer_products"'
    + 'WHERE "active" = true'
    + 'AND "customer_id" = :customerId'
    + ') src'
    + 'WHERE "id" = :customerId', [customerId]))
  .update({
    month_value: 'src.month_value',
    modified: 'NOW()',
});
...