2017-10-20 290 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