如何使用 PostgreSQL 保存用户

问题描述

我跟进了 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)

您可以找到完整的源代码 here

顺便说一句,当我运行 npm run migrate 时,我希望生成 User 表,因为 user.controller.ts 包含在 User 类的扩展中,但是没有!

请指导我如何在 RDBM 数据源中存储凭据。

解决方法

为历史记录;此问题已由 this 解决如下:

  1. 创建 UserUserCredentials 以集成 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
  1. Diana Lauuser.model.ts替换models/user.model.tsmodels/user-credentials.model.ts

  2. UserUserCredentials

    创建存储库
$ 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
  1. 运行npm run build

  2. 修改 datasources/postgresql.datasource.ts 以满足正确的 PostgreSQL 配置,然后根据您的配置创建一个新的 PostgreSQL 数据库。

  3. 运行npm run migrate

  4. 删除以下文件:

  • models/user.model.ts
  • models/user-credentials.model.ts
  • repositories/user.repository.ts
  • repositories/user-credentials.repository.ts
  1. 通过删除以下行修改 models/index.ts
export * from './user.model';
export * from './user-credentials.model';
  1. 通过删除以下行修改 repositories/index.ts
export * from './user-credentials.repository';
export * from './user.repository';

注意:为了在 user-credentials.model.ts 中更好地集成 JWT,我提出了一项新功能请求。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...