Car*_*ter 8 node.js sequelize.js
我们需要以特定格式提供续订日期,而不是默认格式.据我所知,没有办法在选项中或任何其他方式设置它.如果没有人在每次检索日期后手动更新日期,那么任何人都可以轻松解决这个问题吗?或者我错过了什么?
Jon*_*Saw 29
你可以使用Sequelize fn方法.从API Reference中,该fn函数将帮助在查询中创建表示SQL函数的对象.
例如:
model.findAll({
attributes: [
'id',
[sequelize.fn('date_format', sequelize.col('date_col'), '%Y-%m-%d'), 'date_col_formed']
]})
.then(function(result) {
console.log(result);
});
Run Code Online (Sandbox Code Playgroud)
将返回数据值:
[
{"id": 1, "date_col_formed": "2014-01-01"},
{"id": 2, "date_col_formed": "2014-01-02"}
// and so on...
]
Run Code Online (Sandbox Code Playgroud)
iwa*_*rte 17
21/06/2019
Sequelize 是一个强大的 ORM(我不是说它是最好的解决方案),但它的文档非常糟糕。
无论如何,如果你想在你的模型中配置这个,除了必须在你的查询中重复这个之外,因为其他响应状态你可以这样做:
const Test = sequelize.define('test', {
// attributes
name: {
type: DataType.STRING,
allowNull: false
},
createdAt: {
type: DataType.DATE,
//note here this is the guy that you are looking for
get() {
return moment(this.getDataValue('createdAt')).format('DD/MM/YYYY h:mm:ss');
}
},
updatedAt: {
type: DataType.DATE,
get() {
return moment(this.getDataValue('updatedAt')).format('DD/MM/YYYY h:mm:ss');
}
}
Run Code Online (Sandbox Code Playgroud)
如果您使用日期提供信息为:上次更新、首次登录、上次登录。这是要走的路。
函数 get 返回新的格式化元素,因此它也不应该仅限于日期!请记住,这会减慢您的查询速度,因此请谨慎使用。;)
更多信息(我知道我知道,但 docs 是游戏的名称):http : //docs.sequelizejs.com/manual/models-definition.html#getters--amp--setters
你可以定义自定义实例方法getDate/setDate,它可以在sequelize内部表示和所需格式之间转换日期,如http://sequelize.readthedocs.org/en/latest/docs/models-definition/index.html(参见'扩展模特的部分)
| 归档时间: |
|
| 查看次数: |
25487 次 |
| 最近记录: |