2017-10-20 293 views
1

我已經建立了一個帶有typeorm(https://github.com/typeorm/typeorm)和NEST(https://github.com/nestjs/nest)的系統,但TypeORM不會創建表或列。我的設置是這樣的:TypeORM不會創建表格,列等

import {UserPassword} from '../user/user-password.entity'; 
import {User} from '../user/user.entity'; 

createConnection({ 
    type: 'mysql', 
    host: 'typeorm2.cn32tstd6wqk.eu-central-1.rds.amazonaws.com', 
    port: 1234, 
    username: 'username', 
    password: 'password', 
    database: 'dbname', 
    entities: [ 
     // __dirname + '/../**/*.entity{.ts,.js}' 
     UserPassword, 
     User 
    ] 
    }) 

而且實體是:

import {Entity, Column, PrimaryGeneratedColumn, OneToOne, JoinColumn} from 'typeorm'; 

@Entity() 
export class UserPassword { 

    @PrimaryGeneratedColumn() 
    id: number; 

    @Column() 
    hash: string; 

    @Column() 
    algorithm: string; 

} 

import {Entity, Column, PrimaryGeneratedColumn, OneToOne, JoinColumn} from 'typeorm'; 
import {UserPassword} from './user-password.entity'; 

@Entity() 
export class User { 
    @PrimaryGeneratedColumn() 
    id: number; 

    @Column({ length: 35 }) 
    firstName: string; 

    @Column({ length: 35 }) 
    lastName: string; 

    @Column({ length: 50}) 
    mail: string; 

    @OneToOne(type => UserPassword) 
    @JoinColumn() 
    password: UserPassword; 

} 

然後我嘗試創建這樣一個用戶:

// ... some code 
await this.userPasswordRepository.save(userPassword); 
return await this.userRepository.save(user); 

但我收到以下錯誤:

當我插入表手動然後我得到的錯誤:

QueryFailedError: ER_BAD_FIELD_ERROR: Unknown column 'hash' in 'field list' 

所以好像typeorm不生成表/列。有誰知道這可能是爲什麼?

回答

0

我切換到typeorm版本0.1.0-alpha.40創建一個連接,這使得它工作時有選擇autoSchemaSync

createConnection({ 
    type: 'mysql', 
    host: 'typeorm2.cn32tstd6wqk.eu-central-1.rds.amazonaws.com', 
    port: 1234, 
    username: 'username', 
    password: 'password', 
    database: 'dbname', 
    entities: [ 
    // __dirname + '/../**/*.entity{.ts,.js}' 
    UserPassword, 
    User 
    ], 
    autoSchemaSync: true, 
}) 
+1

這個選項是從typeorm的第一個版本出現。順便說一句,你使用的是舊版本的TypeORM。當前版本是0.1.1,'autoSchemaSync:true'現在只是'synchronize:true' – pleerock