2017-12-05 29 views
0

私はREST APIを書いています。データアクセスのために私はtypeormを使っていますが、これをうまく使いましたが、私のテーブルの1つにUUID自動生成のプライマリキーがあります。typeorm:postgresqlで自動生成されたUUID

がどのようにセットアップUUIDタイプと自動生成されtypeormで列をする人を知っていて、私は次のことを試してみました:

@PrimaryGeneratedColumn()

@PrimaryGeneratedColumn() id: string; 

を使用して同期するときにこれは私に例外を与えますデータベース@PrimaryColumn@Generated

を使用して

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) 

とこの

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列を得るかが、ませと自動生成された列

私はこれを達成するための他の方法を見ることができない、これはa)のであればそう誰かがアドバイスしてください可能性があり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に置き換えることができます。

関連する問題