问题描述
我跟进了 LoopBack JWT tutorial,但它没有提到如何在真实数据源(例如 RDBM 数据源)中存储凭据
为此,我只是用 connector: 'postgresql'
创建了一个 datasource,但它不起作用,因为我总是收到此错误消息!
Request POST /signup Failed with status code 500. error: relation "public.user" does not exist
at Parser.parseErrorMessage (/home/laptop/LoopBack/multitenancy/node_modules/pg-protocol/src/parser.ts:357:11)
at Parser.handlePacket (/home/laptop/LoopBack/multitenancy/node_modules/pg-protocol/src/parser.ts:186:21)
at Parser.parse (/home/laptop/LoopBack/multitenancy/node_modules/pg-protocol/src/parser.ts:101:30)
at Socket.<anonymous> (/home/laptop/LoopBack/multitenancy/node_modules/pg-protocol/src/index.ts:7:48)
at Socket.emit (events.js:315:20)
at addChunk (internal/streams/readable.js:309:12)
at readableAddChunk (internal/streams/readable.js:284:9)
at Socket.Readable.push (internal/streams/readable.js:223:10)
at TCP.onStreamRead (internal/stream_base_commons.js:188:23)
顺便说一句,当我运行 npm run migrate
时,我希望生成 User
表,因为 user.controller.ts 包含在 User
类的扩展中,但是没有!
请指导我如何在 RDBM 数据源中存储凭据。
解决方法
为历史记录;此问题已由 this 解决如下:
- 创建
User
和UserCredentials
以集成 JWT
$ lb4 model User
? Please select the model base class Entity (A persisted model with an ID)
? Allow additional (free-form) properties? No
Model User will be created in src/models/user.model.ts
Let's add a property to User
Enter an empty property name when done
? Enter the property name:
create src/models/user.model.ts
update src/models/index.ts
Model User was/were created in src/models
$ lb4 model UserCredentials
? Please select the model base class Entity (A persisted model with an ID)
? Allow additional (free-form) properties? No
Model UserCredentials will be created in src/models/user-credentials.model.ts
Let's add a property to UserCredentials
Enter an empty property name when done
? Enter the property name:
create src/models/user-credentials.model.ts
update src/models/index.ts
Model UserCredentials was/were created in src/models
-
用Diana Lau和user.model.ts替换
models/user.model.ts
和models/user-credentials.model.ts
-
为
创建存储库User
和UserCredentials
$ lb4 repository
? Please select the datasource PostgresqlDatasource
? Select the model(s) you want to generate a repository for UserCredentials,User
? Please select the repository base class DefaultCrudRepository (Juggler bridge)
? Please enter the name of the ID property for UserCredentials: id
? Please enter the name of the ID property for User: id
create src/repositories/user-credentials.repository.ts
create src/repositories/user.repository.ts
update src/repositories/index.ts
update src/repositories/index.ts
Repositories UserCredentialsRepository,UserRepository was/were created in src/repositories
-
运行
npm run build
-
修改
datasources/postgresql.datasource.ts
以满足正确的 PostgreSQL 配置,然后根据您的配置创建一个新的 PostgreSQL 数据库。 -
运行
npm run migrate
-
删除以下文件:
models/user.model.ts
models/user-credentials.model.ts
repositories/user.repository.ts
repositories/user-credentials.repository.ts
- 通过删除以下行修改
models/index.ts
:
export * from './user.model';
export * from './user-credentials.model';
- 通过删除以下行修改
repositories/index.ts
:
export * from './user-credentials.repository';
export * from './user.repository';
注意:为了在 user-credentials.model.ts 中更好地集成 JWT,我提出了一项新功能请求。