如何在sails中的updatedAt字段中设置自定义值

问题描述 投票:2回答:2

我想以2方式保存updatedAt。

1)如果我在保存数据时在该对象中传递了一些值,那么它应该按该日期保存当前日期和时间。

即今天当前日期是2018-07-27 16:41:14,如果我设置updatedAt ='2018-03-13 17:40:44'那么它应设置为'2018-03-13 17:40:44'

2)它应该像autoUpdatedAt = True一样保存。因此,如果未设置updatedAt,则应采用当前日期和时间。

即今天当前日期是2018-07-27 16:41:14,如果没有设置updatedAt那么它应该被设置为2018-07-27 16:41:14


谢谢大家的努力。但是,我找到了解决方案如下。

对特定模型类进行以下更改。

  autoUpdatedAt: false,

updatedAt:{
      type: 'datetime',
      defaultsTo: function(){return new Date();},
    }

// LifeCycle回调

beforeUpdate: function (valueToBe, proceed) {
    if (valueToBe.updatedAt == null) {
      valueToBe.updatedAt = new Date();
    }
    return proceed();
  },
javascript sails.js
2个回答
1
投票

您需要使用日期选择器组件并将其设置为可以轻松默认为当前日期的必填字段。


1
投票

正如@mikermcneil所提到的,我还建议将其保存为JS时间戳。您可以在以后需要时使用momentJS进行格式化。我也会处理控制器中的逻辑而不是模型中的逻辑。因此,例如,在控制器中,您可以创建一个dataToUpdate对象,该对象可能包含或不包含updatedAt数据,那么当您调用DB时,它看起来像:

Record.updateOne({id}).set({
    someField: dataToUpdate.someField,
    someOtherField: dataToUpdate.someOtherField,
    updatedAt: dataToUpdate.updatedAt ? dataToUpdate.updatedAt : Date.now(),
    ...
})
© www.soinside.com 2019 - 2024. All rights reserved.