首页 > 解决方案 > Loopback4 挑战

问题描述

我对这个 Loopback 4 很陌生。当我设置我的项目时,我遇到了一些设置问题。下面是几件事。

  1. 基于环境的数据源加载 没有直接的方法可以根据环境加载数据源。

  2. 需要在 JSON 文件上定义一些配置/常量变量才能访问整个应用程序,这也是基于环境的。

  3. 无法连接 MongoDB Atlas 数据库。在快速应用程序中,我可以连接,但不能在 Loopback 中连接。以下是它返回的错误。url.dbName || self.settings.database, ^ TypeError: 无法读取属性 'dbName' of null

  4. 无法实现模型关系。

  5. 我不想在我的 API 响应中返回整个模型。如何使用模型自定义我的 API 响应?
  6. 我想将我的业务逻辑写在一个单独的文件中,而不是在控制器/存储库中。这是一个好主意还是我应该在哪里返回业务逻辑?和最佳实践。

我在 Loopback4 上找不到合适的文档来解决这些问题。任何帮助,将不胜感激。

标签: node.jsloopbackjs

解决方案


让我尝试帮助您解决其中的一些问题。

1 - 您可以通过在 datasource.ts 文件的构造函数中添加以下内容来执行基于 env 的 ds 配置加载。

constructor(
  @inject('datasources.config.pgdb', {optional: true})
  dsConfig: object = config,
) {
  // Override data source config from environment variables
  Object.assign(dsConfig, {
    host: process.env.DB_HOST,
    port: process.env.DB_PORT,
    user: process.env.DB_USER,
    password: process.env.DB_PASSWORD,
    database: process.env.DB_DATABASE,
    schema: process.env.DB_SCHEMA,
  });
  super(dsConfig);
}

在此之后,您可以使用像dotenv这样的包来将 env vars 排除在您的 repo 之外。

2 - 使用dotenv。在 application.ts 中加载 dotenv 配置。将此添加到 application.ts 的末尾。

dotenv.config();

您可能需要像这样导入 dotenv

import * as dotenv from 'dotenv';

3 - 对此不确定,但请在此处检查数据源生成器是否支持它。

4 - 目前仅支持 3 种类型的关系。而且,根据我的经验,这对于大多数应用程序来说已经足够了——belongsTo、hasMany、hasOne。有关详细信息,请参阅此处的文档。

5 - 您可以返回任何您想要的自定义模型。只要确保它从@loopback/repository 扩展实体类。此外,请确保使用 @property 装饰器定义属性类型。

6 - 您可以将业务逻辑移动到服务类或创建提供程序。我们曾经将数据库特定的操作逻辑(如自定义查询等)保留在存储库中,并将其余业务逻辑保留在控制器中。但是如果有一个很大的复杂逻辑,创建一个提供者类并在那里做。在此处参考提供者的文档。

我们还在 github 上创建了一个样板启动项目,以帮助像您这样的社区成员开始使用一些基本的东西。上面提到的大部分东西都是在那里实现的。您可以克隆它,更改远程 url,一切就绪。看看这里


推荐阅读