Форум программистов, компьютерный форум, киберфорум
Наши страницы
MongoDB
Войти
Регистрация
Восстановить пароль
 
Radical_Dreamer
0 / 0 / 0
Регистрация: 13.09.2015
Сообщений: 16
1

Проверка имени пользователя при регистрации

14.11.2017, 17:15. Просмотров 224. Ответов 0
Метки нет (Все метки)

Доброго времени суток. Пишу API на Node.js для регистрации пользователей:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
        mongoClient.connect(url, function(err, db) {
            db.collection("users").findOne({
                username: uUsername
            }, function(err, user) {
                if (err) return res.status(400).send();
 
                // username is already taken
                if (user != undefined)
                    return res.status(422).send();
 
                db.close();
            });
 
            db.collection("users").insertOne(user, function(err, user) {
                if (err) return res.status(400).send();
 
                res.send(user);
                db.close();
            });
        });
Проблема с кодом выше в том, что если пользователь уже зарегистрирован, то метод insertOne выполнять не нужно.
Возможно я и туплю, но я не вижу способа, как это сделать, т.к. переменные извне callback'а метода findOne недоступны.

Добавлено через 49 минут
Нашел решение проблемы, путем обращения к БД через колбеки, но что-то мне подсказывает, можно было и как-то проще это сделать.

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
        var foo = function (user, callback) {
            mongoClient.connect(url, function(err, db) {
                db.collection("users").findOne({
                    username: uUsername
                }, function(err, result) {
                    if (err) return res.status(400).send();
 
                    // username is already taken
                    if (result != undefined)
                        return res.status(422).send();
                    else {
                        db.close();
                        callback(user);
                    }
                });
            });
        }
        var callback = function(user) {
            mongoClient.connect(url, function(err, db) {
                console.log(user);
                db.collection("users").insertOne(user, function(err, result) {
                    if (err) return res.status(400).send();
 
                    res.send(user);
                    db.close();
                });
            });
        }
 
        foo(user, callback);
Может кто-нибудь знает лучшее решение?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.11.2017, 17:15
Ответы с готовыми решениями:

Переход на шаблон при регистрации, и добавление имени пользователя после имени домена
доброго дня вам у меня такая задача мне нужно чтобы при регистрации в форме...

Не работает проверка имени при регистрации
Помогите пожалуйста разобраться, я написал скрипт для регистрации, но проверка...

Проверка пользователя при регистрации
Есть такая функция function auth_user($name,$pass) { $file_array =...

Проверка существующего пользователя при регистрации
Всем доброго времени. Пилю форму регистрации в БД а для этого проверяю по...

При подключении интернета (проверка имени пользователя и пароля)выпадает синий экран 0x000000d1
При подключении интернета (проверка имени пользователя и пароля)выпадает синий...

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.11.2017, 17:15

Определение факта регистрации пользователя и его имени
Здравствуйте. Подскажите, пожалуйста, как программно определить, что...

Проверка имени пользователя в БД SQL
Как помощью Transact SQL как проверить имеется ли пользователь в БД SQL? У...

Проверка имени пользователя в ADOConnection
Всем доброго времени суток. Смысл задачи - доступ к базе через ADOConnection...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru