Я работаю над созданием системы регистрации пользователей для веб-сайта, над которым я работаю, но у меня есть несколько проблем.Node.js Синхронные запросы с MySQL
Я стараюсь держаться подальше от необходимости гнездовых обратных вызовов, потому что он получает вид грязно, что мне нужно помочь в поиске, если есть способ создания синхронных запросов с узлом-Mysql
Вот что я Я пытаюсь достичь.
connection.query("select 1 as email from users where email = " + connection.escape(email), function(err, rows, fields) {
if(err) {
var error = {
error_message: err.code,
error_number: err.errno
};
return res.send(error);
}
if(rows.length > 0) {
var error = {
message: 'Email Address is Taken',
code: 2
};
return res.send(error);
}
});
connection.query("insert into users (email, password) values ("+connection.escape(email)+", "+connection.escape(hash)+")", function(err, rows, fields) {
if(err) {
var error = {
error_message: err.code,
error_number: err.errno
};
return res.send(error);
}
});
Моя цель состоит в том, чтобы первый запуск запроса и, если это возвращает строку, чтобы потом не выполнить второй запрос, но если первый запрос возвращает 0 строк затем продолжить и запустить второй запрос.
Я знаю, что я могу вложить второй запрос в первый запрос и поставить, если в другом, но это то, что я не хочу делать, потому что, хотя у меня есть эти два запроса, у меня также есть возможность использовать bcrypt для шифрования пароль, который также должен быть вложен.
Есть ли способ написать его так, что мне не нужно вставлять два запроса или вложенность их будет моим единственным вариантом?
Вы должны гнездо их. –
Не нужно использовать гнездование. Вы можете использовать async waterfall и передать переменную true/false между шагами. Если вы не можете запустить второй запрос, просто передайте значение false из первого. – CargoMeister
Если вы собираетесь разрабатывать в node.js, вам нужно научиться писать хороший асинхронный код, поскольку это главный архитектурный элемент node.js, и если вы строите сервер, вам нужно использовать операции async для поддерживать чувство реагирования и масштабируемости сервера. Теперь можно начать. Я бы посоветовал узнать, как использовать обещания, чтобы вы могли цепочки последовательных операций, а не гнездо, и это облегчает обработку ошибок. – jfriend00