【问题标题】:Save database entrys from array in nodejs从节点js中的数组保存数据库条目
【发布时间】:2020-02-15 01:48:20
【问题描述】:

我从网站上抓取数据并将它们保存到数组中。我想保存这个数组扔了一个mysql数据库。

我使用nodejs作为后端框架,mysql数据库和typeorm作为数据库框架。

这是来自我的快速网络服务器的代码,我想通过 for-loop 传递元素并扔到数据库中:

app.get('/dev', async (req, res) => {
console.log(req.body)
const channelData = await scrape.scrapeChannel()
console.log(channelData.namearray.length);

for (i = 0; i < channelData.namearray.length; i++) {
 const creators = await database.insertCreator(channelData.namearray[i], channelData.datearray[i], channelData.imgarray[i])
    res.send(creators)
}});

这是我的数据库连接代码:

async function insertCreator(training, date, img) {

const connection = await getConnection();

// create
const creator = new Creator();
creator.img = img;
creator.training = training;
creator.date = date;

// save
const creatorRepo = connection.getRepository(Creator);
const res = await creatorRepo.save(creator);
console.log('saved', res);

// return new list
const allCreators = await creatorRepo.find();
connection.close();
return allCreators;}

如果我运行代码,我会收到以下错误消息:

AlreadyHasActiveConnectionError: 无法创建名为“default”的新连接,因为使用该名称的连接已经存在并且它现在有一个活动的连接会话。

好像我没有关闭我的数据库连接。但我不知道在哪里以及为什么。

希望你能帮助我。

【问题讨论】:

    标签: mysql node.js database typeorm


    【解决方案1】:

    您正在为每个插入打开和关闭连接。您收到此错误是因为在旧连接关闭之前进行了新连接尝试。

    尝试打开一次连接,将连接传递给插入函数,执行所有插入,最后关闭连接。

    //Pseudo code here
    connection = getConnection()
    for loop {
      insertCreator(connection, params) 
    }
    connection.close()
    

    如果这是生产代码的一部分,我建议对每个请求使用 connectionPool,以便正确处理所有请求。

    【讨论】:

    • 非常感谢您的快速回复。现在我收到了这个错误: TypeError: connection.getRepository is not a function 我认为这是因为我没有正确传递参数。我没有提到的。带有 for 循环的代码与带有 insertCreator 函数的代码位于另一个文件中。你有什么猜测吗?
    • 这是新错误吗?您可以插入任何项目吗? getConnection() 应该与您的旧实现相同,typeorm 库应该为您提供连接对象以访问 getRepository() 函数。你能用最新的代码更改和你面临的问题来更新你的问题吗?我想查看getConnection() 函数的详细信息(屏蔽所有连接选项,如主机、用户名和密码)
    • 为避免此类错误,请使用connectionPool。
    • 好的,我会尝试使用连接池。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多