node.js - Loopback4 挑战
问题描述
我对这个 Loopback 4 很陌生。当我设置我的项目时,我遇到了一些设置问题。下面是几件事。
基于环境的数据源加载 没有直接的方法可以根据环境加载数据源。
需要在 JSON 文件上定义一些配置/常量变量才能访问整个应用程序,这也是基于环境的。
无法连接 MongoDB Atlas 数据库。在快速应用程序中,我可以连接,但不能在 Loopback 中连接。以下是它返回的错误。url.dbName || self.settings.database, ^ TypeError: 无法读取属性 'dbName' of null
无法实现模型关系。
- 我不想在我的 API 响应中返回整个模型。如何使用模型自定义我的 API 响应?
- 我想将我的业务逻辑写在一个单独的文件中,而不是在控制器/存储库中。这是一个好主意还是我应该在哪里返回业务逻辑?和最佳实践。
我在 Loopback4 上找不到合适的文档来解决这些问题。任何帮助,将不胜感激。
解决方案
让我尝试帮助您解决其中的一些问题。
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,一切就绪。看看这里。
推荐阅读
- openssl - 我认为 openssl/../rsa_eay.c 第 674 行中的 PGP 是什么?
- excel - 电子邮件 VBA Excel - 包括电子邮件范围
- reportbuilder - 如何使用默认过滤器将报表从报表生成器导出到 Excel
- python - Python 文件在 Pycharm 中有效,但在终端中无效
- ios - 使用 SwiftUI 的导航链接视图不是全屏
- r - 如何最小化创建的 R 代码的不可接受的长时间运行时间
- gcc - #line 上的 Clang 错误“预期表达式”(构建 gcc)
- spring - 用于在 REST API 上保存具有多个关系的实体的存储库与 JQPL
- amazon-web-services - 如何使用 AWS 设置绿/蓝部署管道?
- python - 验证时捕获 LDAPError