gpt4 book ai didi

Sequelize.js - 在保存时生成字段值

转载 作者:行者123 更新时间:2023-12-03 22:32:15 27 4
gpt4 key购买 nike

目前,我有一个 SQL 查询,它根据其实际内容为名为 seqid 的列生成一个值:

INSERT into invoices(seqid) SELECT concat(year(CURDATE()),'-',lpad(ifnull(max(convert(substr(seqid,6), UNSIGNED INTEGER)+1),1),4,0)) FROM invoices where seqid like concat(year(CURDATE()),'-%')
基本上它以以下格式创建记录:

2019-0001 2019-0002 2019-0003 2020-0001 2021-0001...


我想使用 sequelize 达到相同的结果。但我在文档中找不到如何。 Can sequelize.literal 可以用于这种情况,或者是一个钩子(Hook),或者两者的混合。
任何帮助,将不胜感激。谢谢

最佳答案

使用这样的钩子(Hook)有效:

beforeSave: async (instance,options)=>{
let year=new Date().getFullYear()
let offset= await Invoice.count('seqid',{where:{seqid: {[Op.like]: `${year}-%`}}})
instance.seqid=[year,Number(offset+1).toString().padStart(4,0)].join('-');
}
但是,公平的问题是:在钩子(Hook)中调用 .count 真的是一个好习惯吗,这会导致 2 个 SQL 查询,一个用于计数,最后一个用于保存

关于Sequelize.js - 在保存时生成字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65842536/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com