【发布时间】:2018-06-20 07:28:03
【问题描述】:
我正在尝试在 CSV 导入中使用 findOrCreate 函数来防止使用相同的电子邮件地址创建多个用户,但它不起作用。
我将 CSV 文件中的所有行导入内存:
importableCsvRows.forEach(row => importData(row))
然后我遍历每一行来导入一个用户:
function importData (row) {
const name = row[0]
const email = row[1]
addUser(name, email)
}
在 addUser 函数中我使用 findOrCreate:
function addUser (name, email) {
return new Promise(function (resolve, reject) {
const user = models.users.findOrCreate({
where: {email: email},
defaults: { email: email, name: name }
})
.then(u => {
return resolve(u)
})
.catch(err => {
console.log('ERROR', err)
return reject(err)
})
})
}
问题是多个事务启动,因为 findOrCreate 是异步的,所以在第一行完成处理之前,下一行开始。
【问题讨论】:
-
不,我试过了,仍然一次打开 5 个交易
-
最简单的方法是使用
for循环
标签: javascript node.js asynchronous sequelize.js