【问题标题】:How to save users using PostgreSQL如何使用 PostgreSQL 保存用户
【发布时间】:2021-04-29 09:03:57
【问题描述】:

我跟进了 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 数据源中存储凭据。

【问题讨论】:

    标签: node.js postgresql authentication loopbackjs loopback


    【解决方案1】:

    用于历史记录;此问题已由Diana Lau 解决如下:

    1. 创建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
    
    1. models/user.model.tsmodels/user-credentials.model.ts 替换为user.model.tsuser-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';
    

    注意:我在this issue 中提出了一个新功能请求,以更好地集成 JWT。

    【讨论】:

    • 这似乎是糟糕的分辨率。为什么Auth组件不能创建用户表?
    • @MuratErsin 这绝对正确;这是迫使我放弃 LoopBack 以支持 NestJS 的原因之一
    猜你喜欢
    • 2012-08-15
    • 2019-04-18
    • 2017-02-09
    • 1970-01-01
    • 2013-02-09
    • 1970-01-01
    • 2023-04-03
    • 2012-04-05
    • 1970-01-01
    相关资源
    最近更新 更多