Node.js
sequelize

csv-stringifyを使用するとdatetimeがエポック秒(UNIX時間)になる

csv-stringifyを使うとエポック秒(UNIX時間)になる

背景

lambdaがサポートしているnodeがv6.10のためそれを使用
csv形式で共有したい
sequelizeを使用していたためcreatedAt,updatedAtカラムがあり両方ともdate型
それ以外のカラムは日付情報を持っていない

csv-stringifyの基本的な書き方

const stringify = require('csv-stringify')
stringify([data], [options], [callback])

//例
stringify(data, (err, output)=>{
  console.log(output)
}

エポック秒(UNIX時間)からYYYY/MM/DD形式への変換

require('date-utils');
const stringify = require('csv-stringify')

stringify(
    data,
    {
        formatters: {
            date: function(value) {
               return value.toFormat("YYYY/MM/DD")
            }
        }
    },
    (err, output)=>{
         console.log(output)
    }
);

注意点

returnのあとを変更すればmomentも使うことができる
今回はdate-utilsを使用してくれという指示だったので使用
option:formattersのオプションdateを使いvalueのformatを指定していく
dateはカラム名ではない
date型全て変換してしまうためこの方法では個別指定はできない

個別指定をしたい場合

option:columnを使用してoutputをゴニョゴニョするしかない