Hei*_*erg 7 orm typescript typeorm
当我参考此文档尝试连接数据库时,我使用 typeorm 开发了我的应用程序。
我尝试了以下示例,它返回了结果。
const datasource = new DataSource(LocalOrmconfig)
datasource.initialize()
.then(() => {
console.log("Data Source has been initialized!");
const result = datasource.getrepository(Sample).findone(query)
})
.catch((err) => {
console.error("Error during Data Source initialization", err);
});
Run Code Online (Sandbox Code Playgroud)
但以下没有返回结果。
文件说It's a good idea to make AppDataSource globally available by export-ing it, since you'll use this instance across your application.
我想datasource在任何地方使用,所以我想知道如何导出和使用datasource.
const datasource = new DataSource(LocalOrmconfig)
datasource.initialize()
.then(() => {
console.log("Data Source has been initialized!");
})
.catch((err) => {
console.error("Error during Data Source initialization", err);
});
const result = await datasource.getrepository(Sample).findone(query)
Run Code Online (Sandbox Code Playgroud)
如果有人在exporting datasource全球范围内体验并使用它们,请告诉我如何使用它们。谢谢!
小智 4
我认为你可以使用依赖注入方法,例如)typdi。该文档说您可以导出初始化的 dataSource 对象并在全局中使用它,如下所示。
## connection.js ##
const connToDS = async() => {
const dataSourceConn = new DataSource(LocalOrmconfig);
try{
await dataSourceConn.initialize();
console.log("Data Source has been initialized!");
return dataSourceConn;
}catch(err){
console.error("Error during Data Source initialization", err);
}
}
export const dataSource = connToDS();
## service.js ##
import {dataSource} from './Connection';
let serviceDS = await dataSource;
const result = await serviceDS.getrepository(Sample).findone(query)
Run Code Online (Sandbox Code Playgroud)
它可以正常工作,但我建议使用 DI 方式编写代码。
# write connection.js as above
## server.js
import Container from 'typedi';
import {dataSource} from './Connection';
import {DataSource} from 'typeorm';
let globalDS;
# at start point of your application
if(!globalDS){
globalDS = await dataSource;
Container.set(DataSource,globalDS);
}
## service.js ##
import Container from 'typedi';
import {DataSource} from 'typeorm';
let dataSource = Container.get(DataSource)
const result = await dataSource.getrepository(Sample).findone(query)
Run Code Online (Sandbox Code Playgroud)
我不知道你的 API 规范,所以错过了很多代码规则。但这个想法很明确,而且有一些优点。
我不确定这个方法,但它适用于我的项目。希望你能得到你想要的!
| 归档时间: |
|
| 查看次数: |
9571 次 |
| 最近记录: |