gpt4 book ai didi

javascript - 基本类型ORM package 器未连接创建的连接

转载 作者:行者123 更新时间:2023-12-03 12:27:16 25 4
gpt4 key购买 nike

我想创建一个 package 器(服务或管理器)来为我的应用程序驱动TypeORM。
我遇到很多问题,我认为 package 器无法很好地管理TypeORM与数据库的连接。
我创建了一个看起来不错的基本示例,但是....未连接连接(但是TypeORM表示在创建连接时会自动连接)
我创建或获取先前创建的连接的方法:

getConnection(): Connection
{
if (!typeorm.getConnectionManager().has("default"))
{
this.createConnection()
.then((connection) => {return connection})
.catch((error) => {
console.log('create connection database failed')
dialog.showErrorBox('Error!', 'create connection database failed')
})
}
else
{
return typeorm.getConnectionManager().get("default")
}
}
我测试状态连接的方法:
status(): string
{
if (!typeorm.getConnectionManager().has("default"))
{
return "nothing (default) connection"
}
else
{
let isConnected = typeorm.getConnectionManager().get("default").isConnected

if (isConnected)
{
return "connected !"
}
else
{
return "not connected !"
}
}
}
和我的createConnection方法:
createConnection(): Promise<Connection>
{
return typeorm.createConnection({
name: 'default',
type: 'better-sqlite3',
database: './src/../data/database/mydb.db',
entities: [
xxxxx,
xxxxxx,
xxxxxx,
xxxxxx
],
synchronize: true
})
}
这是带有测试示例的基本持久方法:
persist(entityObject: any): any
{
let connection = this.getConnection()

if (connection instanceof Connection)
{
dialog.showErrorBox('DEBUG', 'connection is instance of Connection')
}
else
{
dialog.showErrorBox('DEBUG', 'connection is not instance of Connection')
}

dialog.showErrorBox('Connection Status', this.status())
dialog.showErrorBox('Connection is connected ?', connection.isConnected.toString())
}
我的连接变量是Connection对象TypeORM的一个很好的实例。
但是就在我测试此连接是否与此连接之后:
connection.isConnected.toString()
返回false。
还有这个 :
this.status()
给我返回连接未连接的信息
对我来说很奇怪。我不明白为什么以及如何管理与 package 类js的连接。
我认为有一些我可能不理解的技巧。
我的逻辑过程是:在 package 类的每个方法(例如Persist,update,select等)上,我测试是否存在连接(“默认”)。如果是,则获取此连接,而我创建连接。然后,当我获得Connection对象时,可以将命令TypeORM启动到数据库中。
我有好心态吗?

最佳答案

我已经解决了有关管理 package 器服务类TypeORM中的连接的问题。这是我的主要js代码。如果那可以帮助某人...

getConnection(): Promise<Connection>
{
if (!typeorm.getConnectionManager().has("default"))
{
return this.createConnection()
}
else
{
return new Promise((resolve, reject) =>
{
let connection = typeorm.getConnectionManager().get("default")

if (connection instanceof Connection)
{
resolve(connection)
}
else
{
reject(() => {
let message = "impossible to get Connection"
dialog.showErrorBox('Error!', message)
})
}
})
}
}

status(): string
{
if (!typeorm.getConnectionManager().has("default"))
{
return "nothing (default) connection"
}
else
{
let isConnected = typeorm.getConnectionManager().get("default").isConnected

if (isConnected)
{
return "connected !"
}
else
{
return "not connected !"
}
}
}

close()
{
if (!typeorm.getConnectionManager().has('default'))
{
let message = "nothing connection named default"
console.log(message)
dialog.showErrorBox('Error!', message)
}
else
{
let connection = typeorm.getConnectionManager().get('default')
connection.close().then(() => {return true}).catch(() => {
throw "impossible de clore la connection"
})
}
}

async createConnection(): Promise<Connection>
{
return await typeorm.createConnection({
name: "default",
type: 'better-sqlite3',
database: './src/../xxx/xxxxxxx/mydb.db',
entities: [xxx,xxx,xxxxxx,xxxxx],
synchronize: true
})
}
现在,您可以在使用连接TypeORM的任何其他方法中调用getConnection()方法,而不必担心状态或创建的连接。

关于javascript - 基本类型ORM package 器未连接创建的连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65200882/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com