我想为抽象创建一个管理器类typeorm,并将代码简化为vue.js辅助文件。
我已经创建了类,它似乎可以工作,但不能在第一个启动应用程序上使用。 只有重新加载后才能飞行!也许主题是异步/等待,但我不知道错误编码在哪里。
第一次启动时,我的错误是:
未捕获(承诺)错误:未找到“公开”的元数据
但是,如果我添加了愚蠢的代码(用于快速重新加载),则不会再出现此错误(也许是在两个加载代码之间建立了连接)
您能帮我创建(并理解)一个基本的类管理器typeor来创建很多函数(获取,设置,查询等),这些函数调用我的组件vue.js吗?
这是我的经理typeorm类(包装器):
import * as fs from 'fs'
import * as typeorm from 'typeorm'
import {Public} from './../entity/Public'
export default class testConnectionManager
{
init()
{
if (!typeorm.getConnectionManager().has("default"))
{
let connection = this.createConnection()
}
else
{
return typeorm.getConnectionManager().get("default")
}
}
async createConnection()
{
let connection = await typeorm.getConnectionManager().create({
type: "sqlite",
database: './src/data/mydb.sql',
entities: [
Public,
],
})
let ok = await connection.connect()
}
testConnection()
{
let manager = typeorm.getConnectionManager()
let test1 = manager.has("default")
console.log(test1)
}
base2()
{
let connection = this.init()
let toto = "toto"
const defaultConnection = typeorm.getConnectionManager().get("default")
let public1 = new Public()
public1.name = "dirty public"
defaultConnection.manager
.save(public1)
.then(public1 => {
console.log("Public has been saved. Public id is", public1.id);
})
}
base()
{
typeorm.createConnection({
type: "sqlite",
database: './src/data/mydb.sql',
entities: [
Public,
],
}).then(connection => {
let public1 = new Public()
public1.name = "dirty public"
return connection.manager
.save(public1)
.then(public1 => {
console.log("Public has been saved. Public id is", public1.id);
});
}).catch(error => console.log(error));
}
load()
{
typeorm.createConnection({
type: "sqlite",
database: './src/data/mydb.sql',
entities: [
Public,
],
}).then(connection => {
}).catch(error => console.log(error));
}
}
答案 0 :(得分:0)
发生错误是因为TypeORM无法解析 Public 实体的路径。在我的情况下,我将实体路径设置为转译的JavaScript文件(我认为与您一开始的问题相同),因此您可以尝试执行以下操作:
typeorm.createConnection({
type: "sqlite",
database: './src/data/mydb.sql',
entities: ['PATH_TO_ENTITY/**/*.js'],
}).then(connection => { ...