Adonis.js——数据库基本操作

2018-07-30  本文已影响0人  赫鲁晓夫的玉米棒子

一、配置数据库

adonis支持 PostgreSQL,SQLite,MySQL,MariaDB,Oracle,MSSQL 数据库,默认为SQLite。在 config/database 中修改配置。

  connection: Env.get('DB_CONNECTION', 'mysql'),

二、创建数据库模型(Model)

λ adonis make:model profile
√ create  app\Models\Profile.js

大多数情况下我们无需修改模型文件。

三、创建迁移(migration)

数据库迁移是一种从代码创建,更改和删除数据库表而不是编写SQL查询的过程。

λ adonis make:migration profile
> Choose an action Create table
√ create  database\migrations\1532938278888_profile_schema.js

选择Create table。
创建好了之后,在文件中定义表格的格式。

'use strict'
const Schema = use('Schema')
class ProfileSchema extends Schema {
  up () {//创建时执行内容
    this.create('profiles', (table) => {
      table.increments() // id字段
      //这里是手动添加的---------
      table.string('userNick')
      table.string('introduction')
      table.integer('age')
      //---------------------------------
      table.timestamps()
    })
  }
  down () {//回滚时执行内容
    this.drop('profiles')
  }
}
module.exports = ProfileSchema

创建好了之后执行

adonis migration:status

可以看到所有迁移的执行情况

┌──────────────────────────────┬──────────┬───────┐
│ File name                    │ Migrated │ Batch │
├──────────────────────────────┼──────────┼───────┤
│ 1503248427885_user           │ No       │       │
├──────────────────────────────┼──────────┼───────┤
│ 1503248427886_token          │ No       │       │
├──────────────────────────────┼──────────┼───────┤
│ 1532938278888_profile_schema │ No       │       │
└──────────────────────────────┴──────────┴───────┘

可以看到所有迁移都还没有执行,数据库中也没有一个表。

四、执行迁移,创建表格

输入:

adonis migration:run

输出:

migrate: 1503248427885_user.js
migrate: 1503248427886_token.js
migrate: 1532938278888_profile_schema.js
Database migrated successfully in 509 ms

这时候再运行adonis migration:status就能看到所有迁移都在运行中。

五、填充数据

这里我们给user表格填充数据。
创建一个seeder:

λ adonis make:seed user
√ create  database\seeds\UserSeeder.js

进入文件,添加要插入的数据,然后使用crateMany进行插入。

'use strict'
const Factory = use('Factory')
const user = use('App/Models/User')
class UserSeeder {
  async run () {
    const users = [
      {username: '赫鲁晓夫',email:'hlxf@sl.com',password:'maize'},
      {username: '勃列日涅夫',email:'blrnf@sl.com',password:'medal'}
    ]

    await user.createMany(users)
  }
}
module.exports = UserInfoSeeder

之后再在命令行运行

λ adonis seed --files UserSeeder.js
Seeded database in 67 ms

如果不加 --files UserSeeder.js 那么将执行seeds目录下的所有*Seeder.js文件。

上一篇 下一篇

猜你喜欢

热点阅读