Loopback4挑战

时间:2019-06-26 10:44:39

标签: node.js loopbackjs

我对本次Loopback 4还是很陌生。在设置项目时,我遇到了一些设置问题。以下是几件事。

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

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

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

  4. 无法实现模型关系。

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

我找不到有关Loopback4的适当文档来解决这些问题。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

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

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 var排除在您的存储库之外。

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

dotenv.config();

您可能需要像这样导入dotenv

import * as dotenv from 'dotenv';

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

4-当前仅支持3种关系。而且,以我的经验,对于大多数应用程序-够到,hasMany,hasOne来说,这已经足够了。有关详细信息,请参阅文档here

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

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

我们还在github上创建了一个样板启动器项目,以帮助像您这样的社区成员开始一些基本的工作。上面提到的大多数东西都是在这里实现的。您可以克隆它,更改远程URL,然后全部设置为go。看看here