egg sequelize时间维护如何统一将官方的timestamp转为毫秒时进行存储。
发布于 5 年前 作者 oneWalker 5698 次浏览 来自 问答

egg sequelize时间维护官方统一的是利用timestamp时间维护。 如果要求服务器存储毫秒时间并且不是每一次调用相关表单的时候进行获取时间更新的话呢? 在网上看到了一个在model里面利用hooks的特性来做,但是并没有产生相应的效果,还是说需要在hooks里面定义更新语句? hooks定义: hooks:{ beforeValidate:(User)=>{ let now=Date.now(); User.createdAt=now; }, }

4 回复

找到方法了 在hooks定义了之后,应当使model定义的属性timstamp为true。 因为timestamp有两个作用: 1.维护时间的两个字段created_at,updaed_at 2.使用timestamp这个字段进行维护 所以需要在hooks里面将timstamp的字段用bigint替换掉 另外,所有存入毫秒时间的都应该使用bigint字段进行存储。

@oneWalker 大哥我需要请教个问题,sequelize按照egg官网引入后,定义model的时候也指定了autoIncrement,使用sequelize.model.sync()方法自动生成表, 但是seqelize.model.create()的时候却报错Duplicate entry ‘0’ for key ‘PRIMARY’,这是因为sequelize插入数据时主键并没有自增导致的,填充的一直都是0,请问你们是怎么解决的啊

@gejigejigeji 可能现在回复的有点晚;主键定义了autoIncrement:true就会自增,还有就是你在插入的时候插入了主键值为0

@gejigejigeji 对了。sync的时候你是不是没加参数,sequelize.model.sync()的时候要添加参数:force:true

回到顶部