Adonis.js - 播种用户和配置文件抛出数据库错误 (Postgres)

Adonis.js - Seeding Users and Profiles throwing DB error (Postgres)

我正在尝试为具有一对一关系的用户和配置文件编写种子文件,目前正在获得 "error: relation 'user_profiles' does not exist"。通过四处挖掘,在多对多关系的情况下,Adonis 似乎会假设这是一个支点 table。我(认为或打算)拥有的是用户和配置文件之间的一对一关系。提前致谢! SQL 和 Adonis 的新手。作为旁注,用户坚持到数据库,但没有相应的配置文件。

// My User Schema

class UserSchema extends Schema {
  up () {
    this.create('users', (table) => {
      table.increments('id')
      table.string('username', 80).notNullable().unique()
      table.string('email', 254).notNullable().unique()
      table.string('password', 60).notNullable()
      // table.integer('profile_id').unsigned().references('id').inTable('userprofiles')
      table.timestamps()
    })
  }

  down () {
    this.drop('users')
  }
}
// My Profile Schema

class UserprofileSchema extends Schema {
  up () {
    this.create('userprofiles', (table) => {
      table.increments()
      table.string('first_name')
      table.string('last_name')
      // table.integer('user_id')
      //   .unsigned().references('id').inTable('users')
      table.integer('user_id')
        .unsigned()
        .index('user_id')

      table.foreign('user_id')
        .references('users.id')

      table.timestamps()
    })
  }

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

我的用户模型包括以下关系定义:

profile () {
  return this.hasOne('App/Models/UserProfile')
}
// Seed script

class UserSeeder {
  async run () {
    try {
      const user = await Factory.model('App/Models/User').create()
      const userProfile = await Factory.model('App/Models/UserProfile').make()
      userProfile.user_id = user.id
      await user.profile().save(userProfile)
    } catch (e) {
      console.log('Error From Seeder: ', e);
    }
  }
}

错误代码“42P01”,如果需要,可以 post 全身。谢谢!

在您的模型 userProfile 上,按如下方式设置 table 名称。

class User extends Model {
  static get table () {
    return 'userprofiles'
  }
}