не срабатывает break в js коде

376
11 января 2017, 03:15

Здравствуйте. есть код проверки существования юзера, который выполняется но, если юзер существует он должен выдать в консоль "юзер существует" и остановить программу.
вместо этого, программа выполняется и в json записывается новый юзер (создается дубль) причем создается ТРИ записи...

Вот сам код:

app.use("/register", function (request, response) {
    console.log(request.body);
    fs.readFile("./data/users/users.json", "utf-8", function (err, text) {
        if (err) {
            console.log("ERROR READING FILE" + err);
        } else {
            var users = JSON.parse(text);
            for (var i = 0; i < users.length; i++) {
                if (users[i].email === request.body.email) {
                    console.log("user already exists");
                    break;
                } else {
                    users.push(request.body);
                    fs.writeFile("./data/users/users.json", JSON.stringify(users), function () { // write new user to json
                    });
                }
            }
        }

    });
});

Может у кого то есть пример регистрационной / авторизационной формы с проверками на angular & express ?

Answer 1

Вы добавляете пользователя, до тех пор пока не встретится совпадение в файле. От этого и дублирование.

Необходимо проверять наличие и или отсутствие пользователя, и уже на основе этого делать решение о записи:

var user_in_db = false;
for (var i = 0; i < users.length; i++) {
  if (users[i].email === request.body.email) {
    console.log("user already exists");
    user_in_db = true;
    break;
  }
}
if(!user_in_db){
  users.push(request.body);
  fs.writeFile("./data/users/users.json", 
    JSON.stringify(users), 
    function () { 
     /*write new user to json*/ 
    });
}
READ ALSO
В цикле не обновляются данные

В цикле не обновляются данные

Есть карта на ней маркерКоординаты получаю из БД

300
Как получить свойство background через jquery

Как получить свойство background через jquery

В браузере google chrome все работает, а firefox ничего не находит, в консоле либо пусто либо null

507
Не могу понять ошибку &ldquo;Uncaught ReferenceError: var is not defined&rdquo;

Не могу понять ошибку “Uncaught ReferenceError: var is not defined”

Обновляю данные вывожу их в лог все ок получаю обновленные данные, но когда на деле их вставляю, то выдает:

454
Не отправляется Ajax методом POST

Не отправляется Ajax методом POST

Есть 4 поля для регистрацииПри отправки ajax-запроса в обработчик php ничего не происходит, ничего не появляется

502