Ну лично я бы тут вообще избавился от for-а и сделал бы это прям в базе. Типа передали туда список айдишек и в базе уже ставим от того есть или нет статус. Если конечно такое база позволяет делать.
через Promise.all эти все его проверки будут выполняться не последовательно а параллельно (ну насколько это возможно в ноде) и если там в массиве будет 2 раза один и тот же email он вставится дважды. циклом оно гарантированно один за одним выполняет. я не ратую за цикл но нужно помнить про эту разницу. если в базе стоит unique constraint то ок
через Promise.all эти все его проверки будут выполняться не последовательно а параллельно (ну насколько это возможно в ноде) и если там в массиве будет 2 раза один и тот же email он вставится дважды. циклом оно гарантированно один за одним выполняет. я не ратую за цикл но нужно помнить про эту разницу. если в базе стоит unique constraint то ок
цикл не спасёт если в каком-то другом месте во время ожидания тоже сделают вставку, так что unique в базе вообще единственный вариант но promise.all не вариант, конечно
А чо, цикл по юзерам можно оставить, но всего с 1 действием user.save, где дергать всего 1 хранимку на стороне БД, куда в качестве параметров передавать все поля юзера, а уже в хранимке писать основную логику по проверкам, разводкам по статусам, инсертам, апдейтам, обработке исключений при нарушении уника. Потом эту хранимку можно дергать откуда угодно, хоть с ноды, хоть руками.