web-dev-qa-db-ja.com

sailsjs1.0モデル属性タイプ日付列タイプ日時エラーsailsjsで

Sailsjs 1.0 @ betaには、mysql-sails @betaアダプターを使用してmysqlテーブルのビューにリンクされたモデルがあります。

モデルは次のように構成されます。

attributes: {
    id: {type:'number',  required: true},
    'release_date': { type: 'string', columnType: 'datetime' }
  }

モデルをクエリすると、帆は日付列ごとにエラーの壁を表示します。

Warning: After transforming columnNames back to attribute names, a record
in the result has a value with an unexpected data type for property `release_date`.
The corresponding attribute declares `type: 'string'` but instead
of that, the actual value is:
```
2016-04-07T05:00:00.000Z
```

タイプを「datetime」に設定しようとしましたが、サポートされなくなりました。

The type "datetime" is no longer supported.  To use this type in your model, change
`type` to one of the supported types and set the `columnType` property to a column 
type supported by the model's adapter, e.g. { type: 'string', columnType: 'datetime' }

Sailsjs 1.0bがエラーにならないように、sailsjsモデルに日付を伝える適切な方法についてのドキュメントを見つけることができませんでした。また、sailsに読み取り専用モデルビューを伝える方法はありますか?

6
Alex D

さらに掘り下げた後、これに関するチケットを https://github.com/balderdashy/waterline/issues/1497 で見つけました

文字列の代わりにrefを使用する日時の問題の修正:

attributes: {
    id: {type:'number',  required: true},
    'release_date': { type: 'ref', columnType: 'datetime' }
  }
11
Alex D

回避策は、ユーザーモデルのSailsJSデフォルトWebアプリに現在見られるアプローチである可能性があります。

lastSeenAt: {
      type: 'number',
      description: 'A JS timestamp (Epoch ms) representing the moment at which this user most recently interacted with the backend while logged in (or 0 if they have not interacted with the backend at all yet).',
      example: 1502844074211
    },

次に、UIで、たとえば次のようにすることで、これを人間が読める形式に簡単に変換できます。

new Date(user.lastSeenAt)
0