2017-12-05 35 views
0

REST API를 작성 중이며 데이터 액세스를 위해 typeorm을 사용하고 있습니다. 성공적으로 사용했지만 UUID가 자동 생성 된 기본 키를 갖고 싶습니다. 동기화 할 때typeorm : postgresql에서 자동 생성 된 UUID

@PrimaryGeneratedColumn()

@PrimaryGeneratedColumn() id: string; 

이 나에게 예외를 제공합니다 사용 :

는 사람이, 나는 다음과 같은 시도 설정하는 방법 UUID 유형 및 자동 생성이다 typeorm의 열을에 알고 있나요 데이터베이스와

TypeORM connection error: Error: column "id" cannot be cast automatically to type integer 
app.ts:65 
at new QueryFailedError (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/typeorm/error/QueryFailedError.js:27:28) 
at Query.callback (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:216:38) 
at Query.handleError (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/pg/lib/query.js:143:17) 
at Connection.connectedErrorHandler (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/pg/lib/client.js:132:26) 
at emitOne (events.js:115:13) 
at Connection.emit (events.js:210:7) 
at Socket.<anonymous> (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/pg/lib/connection.js:118:12) 
at emitOne (events.js:115:13) 
at Socket.emit (events.js:210:7) 
at addChunk (_stream_readable.js:266:12) 

@PrimaryColumn@Generated

012,351,641을 사용하여 이

TypeORM connection error: Error: sequence "SystemUser_id_seq" does not exist 
app.ts:65 
at new QueryFailedError (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/typeorm/error/QueryFailedError.js:27:28) 
at Query.callback (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/typeorm/driver/postgres/PostgresQueryRunner.js:216:38) 
at Query.handleError (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/pg/lib/query.js:143:17) 
at Connection.connectedErrorHandler (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/pg/lib/client.js:132:26) 
at emitOne (events.js:115:13) 
at Connection.emit (events.js:210:7) 
at Socket.<anonymous> (/Users/neilstevens/repositories/Capp.co/capp/ms/ms-token-server/node_modules/pg/lib/connection.js:118:12) 
at emitOne (events.js:115:13) 
at Socket.emit (events.js:210:7) 
at addChunk (_stream_readable.js:266:12) 

그래서 내가 차 열을 얻을 수있는이 방법처럼 보이지만이 필요한 순서를 typeorm 생성되지 않는 것은 자동으로 생성 된 열 수를 시도 할 때

@PrimaryColumn({type:"uuid"}) 
@Generated("uuid") id: string; 

는 나는 다음과 같은 오류가 발생합니다 .

내가 @PrimaryColumn({type: "uuid"})를 사용하는 경우 다음 나는 UUID의 테이블에 열하지만 하지 및 자동 생성 된 열을받을 수 있나요

나는 이것이 경우이 그렇게 누군가가 알려 주시기 바랍니다 수 달성하기 위해 다른 방법을 볼 수 없습니다) 심지어 가능하고 b) 자동 생성 된 UUID 열을 만드는 방법에 대해 ... 제발?

답변

1

보십시오 : 당신이 차 열 필요하지만, UUID 시퀀스를 생성 할 필요가없는 경우

@PrimaryGeneratedColumn("uuid") 
id: string; 

또한, 당신이 시도 할 수 있습니다 : 이것은 내가 사용하고 무엇

@Column() 
@Generated("uuid") 
uuid: string; 
0

Postgres 9.6 및 10. UUID는 기본적으로 생성됩니다.

CREATE EXTENSION pgcrypto; 

CREATE TABLE my_table 
(
    uuid UUID NOT NULL UNIQUE DEFAULT gen_random_uuid() 
); 

그러나 UUID를 기본 키로 사용하지 않았습니다. 주로 마이그레이션 용도로 사용됩니다. 내가 아는 것은 그 고유하고 개발 환경에서 아직 충돌이 없다는 것입니다. 대신 NOT NULL 및 UNIQUE를 PRIMARY KEY로 바꿔보십시오.