我对本次Loopback 4还是很陌生。在设置项目时,我遇到了一些设置问题。以下是几件事。
基于环境的数据源加载 没有直接的方法可以根据环境加载数据源。
需要在JSON文件上定义一些配置/常量变量才能访问整个应用程序,同样,这也是基于环境的。
无法连接MongoDB Atlas数据库。在快速应用程序中,我可以连接,但在环回中不能。下面是它返回的错误。 url.dbName || self.settings.database, ^ TypeError:无法读取null的属性'dbName'
无法实现模型关系。
我找不到有关Loopback4的适当文档来解决这些问题。任何帮助将不胜感激。
答案 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。