Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it possible to rename `createdAt` and `updatedAt` in sails.js / waterline

Using Waterline ORM from SailsJS, my defaults for autoCreatedAt and autoUpdatedAt are set to false, but I still need to implement to the functionality just using different field names (DBA request). Is there a way to either:

  1. specify different column names for the automatically generated field, or
  2. manually emulate the same behave in an attribute definition, or
  3. can I just leave custom fields in the schema like created_ts and updated_ts to be updated with triggers in the DB schema itself (but I still need Waterline to read them)?

Thanks in advance.

like image 629
Andrew Eddie Avatar asked Jul 28 '14 02:07

Andrew Eddie


1 Answers

I just opened two pull requests to implement this feature;

  • One to waterline-schema so that the schema builder takes this into account
  • One to waterline so that the timestamp behaviour works as expected.

You can also follow this issue.

With this merged, in your model, instead of having for example :

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();
}

You can just do :

autoCreatedAt: 'created_ts',
autoUpdatedAt: 'updated_ts'
like image 57
Tristan Foureur Avatar answered Nov 07 '22 18:11

Tristan Foureur