从Node.js中的数组保存数据库条目

时间:2020-02-14 17:18:29

标签: mysql node.js database typeorm

我从网站上抓取数据并将其保存到数组中。我想保存这个数组并抛出一个mysql数据库。

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

这是我的快速网络服务器中的代码,我想通过其中的for循环将元素传递给数据库:

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:无法创建名为“默认”的新连接,因为具有该名称的连接已经存在,并且现在具有活动的连接会话。

似乎我没有关闭数据库连接。但是我不知道在哪里,为什么。

希望你能帮助我。

1 个答案:

答案 0 :(得分:0)

您正在打开和关闭每个插入件的连接。之所以出现此错误,是因为在关闭旧连接之前尝试进行新的连接。

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

index.html

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

相关问题