如何优化循环以插入到数据库中
How to optimize loops to insert into database?
您好,我目前正在尝试将从XML文件获取的数据插入到MySql数据库中。我正在使用帆.js和吃水线进行查询。我的表是"用户"和"宠物",一个用户可以有多个宠物,一个宠物可以有多个用户(所有者(,所以我的联接表是users_pets。
-我将XML文件转换为javascript对象,并通过它循环插入数据。我的问题是我需要循环是异步的,因为我不希望在宠物表中记录重复项。对于每次迭代,我都会检查宠物是否存在,如果不存在,我将创建它,否则我将获取其 ID 并将其插入到正在插入的用户中。如果这不是异步的,则会同时触发多个"findOrCreate",并在数据库中创建宠物的副本。
如何优化此代码?对于 125 个用户的 xml 和他们的宠物来说,大约需要 85 秒,这是巨大的。
.XML:
<users>
<user>
<pets>
<pet>
</pet>
</pets>
</user>
...
</users>
法典:
async.eachSeries(users, function(user, callback) {
var pets = [];
async.eachSeries(user.pets, function(pet, callback) {
pets.findOrCreate({name: pet.name}).exec(function (err,userPet) {
pets.push(userPet.id);
callback();
});
}, function(err){
users.create({name: user.name, pets: pets})
.exec(function(err, created) {
callback();
});
});
}, function(err){
...
});
在 sails.js 中,您可以将对象数组发送到 .create()
中,将 id 数组发送到 .find()
中。所以你可以做这样的事情:
Pet
.find(user.pets)
.then(function (pets) {
return User.create({ name: user.name, pets: pets });
})
.then(function (users) {
// done
});
相关文章:
- 使用formData使用ajax将图像插入数据库
- 如何访问日期并将其插入数据库?节点.JS&MongoDB
- 使用Mysqli、PHP和AJAX的聊天系统正在将空白消息插入数据库
- AJAX PHP 连接将行插入数据库
- 使用 pur Html 和 Javascript 将文件插入数据库
- 将表单数据插入数据库后无法重定向到 html 页面
- 将整数变量插入数据库
- 单击按钮可多次动态添加选择框、文本框和日期,并将这些值插入数据库
- 动态选择列表AJAX和插入数据库表通过张贴形式
- 无法使用ajax序列化功能将图像插入数据库
- 使用ajax进行内联编辑(将值插入数据库)
- 将捕获的图像插入数据库问题(Cordova/SQlite/JavaScript)
- 如何在 PHP 中将动态表值插入数据库
- 将数据插入数据库express/mongodb应用程序时出错
- 通过API将视频信息插入数据库
- 我想单击一个
- 并获取 id 以通过 POST 将其插入数据库,可以吗?
- 如何将翻译后的文本插入数据库 php
- PHP-插入数据库而不刷新页面(OOP)
- MongoDB在将文档插入数据库之前为空集合
- 将本地存储值插入数据库