我从网站上抓取数据并将其保存到数组中。我想保存这个数组并抛出一个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:无法创建名为“默认”的新连接,因为具有该名称的连接已经存在,并且现在具有活动的连接会话。
似乎我没有关闭数据库连接。但是我不知道在哪里,为什么。
希望你能帮助我。
答案 0 :(得分:0)
您正在打开和关闭每个插入件的连接。之所以出现此错误,是因为在关闭旧连接之前尝试进行新的连接。
尝试一次打开连接,将连接传递给插入功能,执行所有插入操作,最后关闭连接。
index.html
如果这是生产代码的一部分,我建议对每个请求使用connectionPool,这样所有请求都将得到正确处理。