У меня проблема с тем, что я должен создать 10K документов.Очевидно, что я не могу сделать один за другим, поэтому я создал массив документов и использую его следующим образом
let arr = [
{ username: "admin", password: "asdasdas", id_ref: "2" },
{ username: "admin2", password: "asdasdas", id_ref: "3" },
{ username: "admin3", password: "asdasdas", id_ref: "3" },
{ username: "admin9", password: "asdasdas", id_ref: "3" },
{ username: "admin7", password: "asdasdas", id_ref: "3" },
{ username: "admin6", password: "asdasdas", id_ref: "3" },
{ username: "admin5", password: "asdasdas", id_ref: "3" },
]
User.createEach(arr).exec(function (err, res) {
console.dir(err)
})
, но проблема в том, что у меня есть уникальное ограничение на username
.Поэтому, если пользователь уже существует, он не будет дублироваться.
Решения, которые я пробовал
- Я использовал цикл for, и сначала я использовал User.find, чтобы получитьпользователь, если нет, то вставьте.Но понадобилось около 10 минут, чтобы создать 1400 документов и пропустить 1300, которые уже существовали.Так что это не оптимальное решение.
Я попробовал описанный выше пример, но потом не знаю, какой документ создается, а какой пропущен, так как по ошибке я вижу, что он связан только с одним документом.
Пример ошибки :
{ username:[ { rule: 'unique',
value: 'admin',
message: 'A record with that `username` already exists (`admin`).' } ] }
Но я ожидал множество ошибок документов, которые не вставлены.
Есть ли способ решить мою проблему?Если я найду пропущенные строки, это будет отличное решение.