为typeorm库和vue.js项目创建基本的管理器类

时间:2019-01-14 18:19:33

标签: typeorm

我想为抽象创建一个管理器类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));
    }
}

1 个答案:

答案 0 :(得分:0)

发生错误是因为TypeORM无法解析 Public 实体的路径。在我的情况下,我将实体路径设置为转译的JavaScript文件(我认为与您一开始的问题相同),因此您可以尝试执行以下操作:

typeorm.createConnection({
            type: "sqlite",
            database: './src/data/mydb.sql',
            entities: ['PATH_TO_ENTITY/**/*.js'],
        }).then(connection => { ...