【问题标题】:AdonisJS no default values for timestampsAdonisJS 没有时间戳的默认值
【发布时间】:2018-07-29 17:26:46
【问题描述】:

我已经创建了带有时间戳的基本模式,但是当我在播种器中插入表时,列 created_at 和 updated_at 为空,但根据 Knex.js 文档,我认为如果未指定它应该是当前日期时间。

最新的adonis库,数据库:mysql 5.7。

我的架构

'use strict'

const Schema = use('Schema')

class UserSchema extends Schema {
  up () {
    this.create('users', (table) => {
      table.increments()
      table.string('name')
      table.timestamps()
    })
  }

  down () {
    this.drop('users')
  }
}

module.exports = UserSchema

我的播种机

'use strict'

const Factory = use('Factory')
const Database = use('Database')

class UserSeeder {
  async run () {
    await Database.table('users').insert({
      name: 'JP',
    })
  }
}

module.exports = UserSeeder

【问题讨论】:

    标签: adonis.js


    【解决方案1】:

    时间戳仅适用于 LUCID ORM。您正在使用直接数据库。 在字段中设置您的 json,它将起作用:

    await Database.table('users').insert({
       name: 'JP',
       created_at,: Database.fn.now(),
       updated_at : Database.fn.now()
    })

    【讨论】:

      【解决方案2】:

      我发现只有在使用模型时才会默认使用时间戳,而直接使用数据库时则不会。这个现在包含在文档中。如果它是数据库级别的默认设置,那就太好了。

      【讨论】:

        【解决方案3】:

        您应该添加时间戳参数,例如 useTimestampType 和 makeDefaultNow:

        table.timestamps(true, true)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-06-23
          • 1970-01-01
          • 2018-10-13
          • 2019-06-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多