【问题标题】:Is it possible to rename `createdAt` and `updatedAt` in sails.js / waterline是否可以在sails.js / waterline 中重命名`createdAt` 和`updatedAt`
【发布时间】:2014-09-19 04:28:38
【问题描述】:

使用 SailsJS 中的 Waterline ORM,我对 autoCreatedAtautoUpdatedAt 的默认值设置为 false,但我仍然需要仅使用不同的字段名称(DBA 请求)来实现该功能。有没有办法:

  1. 为自动生成的字段指定不同的列名,或
  2. 在属性定义中手动模拟相同的行为,或
  3. 我是否可以只保留架构中的自定义字段,例如 created_tsupdated_ts,以便使用数据库架构本身中的触发器进行更新(但我仍然需要 Waterline 来读取它们)?

提前致谢。

【问题讨论】:

  • 实际上,链接的答案是略有不同的问题。在这里,我们想知道是否可以更改 DB 列名称,而不是域对象属性名称(在链接的答案中被问到)。这可能是也可能不是相同的答案,这就是我现在想知道的......
  • 自动生成字段的名称在源代码中是硬编码的,因此无法更改。
  • 好吧,我是一个风帆/水线用户,我认为它应该在不久前完成,所以我要为此打开一个拉取请求。完成后我会发布答案!

标签: node.js sails.js waterline


【解决方案1】:

我刚刚打开了两个拉取请求来实现这个功能;

  • 一个到waterline-schema,以便架构构建器考虑到这一点
  • 一个到waterline 以便时间戳行为按预期工作。

你也可以关注this issue

在您的模型中合并后,而不是例如:

autoCreatedAt: false,
autoUpdatedAt: false,
attributes: {
    creationDate: {
        columnName: 'created_ts',
        type: 'datetime',
        defaultsTo: function() {return new Date();}
    },
    updateDate: {
        columnName: 'updated_ts',
        type: 'datetime',
        defaultsTo: function() {return new Date();}
    }
},
beforeUpdate:function(values,next) {
    values.updateDate = new Date();
    next();
}

你可以这样做:

autoCreatedAt: 'created_ts',
autoUpdatedAt: 'updated_ts'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-02
    • 2018-10-08
    • 1970-01-01
    相关资源
    最近更新 更多