【问题标题】:Using MySQL FIELD Function within Sequelize在 Sequelize 中使用 MySQL FIELD 函数
【发布时间】:2020-03-13 14:26:29
【问题描述】:

我需要在 Sequelize 中复制以下内容。不幸的是,我无法完全复制它,也不足以让它真正发挥作用。我需要ORDER BY FIELD

工作查询

SELECT * FROM invoices ORDER BY FIELD(invoice_status_key, 'unpaid', '逾期'、'未结'、'已付')ASC;

这是我拥有的接近但不准确且无法正常工作的代码:

Invoice.findAll({ order: [ [sequelize.fn('FIELD', ['invoice_status_key', 'open', 'unpaid', 'overdue', 'paid']), 'ASC'] ],日志记录:console.log });

此代码产生以下查询:

选择idcompany_idcustomer_idjob_idinvoice_status_key, identifier, subtotal, tax, shipping, total, summary, due_at, paid_at, created_at, updated_at FROM invoices AS Invoice ORDER BY FIELD('invoice_status_key', 'open', 'unpaid', '逾期', 'paid') ASC;

可能是错误的字段invoice_status_key 在函数内部被引用,而函数期望它不被引用。我尝试了很多方法,这是我得到的最接近的方法,但不幸的是它没有按正确的顺序产生结果。

感谢任何帮助。

【问题讨论】:

    标签: mysql sql node.js sequelize.js


    【解决方案1】:

    我能够使用文字和原始查询来完成我所追求的目标。

    让 invoices = await Invoice.findAll({ 命令: [ sequelize.literal("FIELD(invoice_status_key, 'open', 'unpaid', 'overdue', 'paid') ASC")] ] });

    按预期产生了最终结果。

    【讨论】:

      猜你喜欢
      • 2016-03-08
      • 2017-09-13
      • 2019-10-05
      • 2019-09-05
      • 2013-11-10
      • 1970-01-01
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      相关资源
      最近更新 更多