Пользователь пока ничего не рассказал о себе

Наибольший вклад в теги

Все теги (6)

Лучшие ответы пользователя

Все ответы (4)
  • Как можно реализовать вывод ID из базы данных в переменную?

    @ElijahCapricorn
    Можно просто создать переменную перед вызовом getConnection

    let id;
    pool.getConnection(function(err, connect) {
        connect.query(..., function(err, result) {
            ...
            if(!err && result.length !== 0) {
                id = result.id;
            }
            ...
        }
    }

    Но из-за того, что запросы к БД асинхронные Вы не сможете узнать когда значение запишется в переменную.

    По этой причине в асинхронные функции передают коллбэк, который на вход получит результат выполнения асинхронного кода.
    function createOrUpdateUsersCallback(err, result) {
        if (err) {
    		console.log(err);
    	}
    	else {
    		// Use result.id as you want
    	}
    }
    
    function createOrUpdateUsers(callback) {
    	pool.getConnection(function(err, connect) {
    		connect.query(..., function(err, result) {
    			if(err) {
    				callback(err, null);
    			}
    			else {
    				// Do create or update 
    				callback(null, result);
    			}
    
    		}
    	}
    }
    
    createOrUpdateUsers(createOrUpdateUsersCallback);

    Но в современном мире с асинхронным кодом проще всего работать через промисы и async/await
    На промисах это будет что-то вроде
    const createOrUpdateUsersPromise = new Promise((resolve, reject) => {
    	function createOrUpdateUsers(callback) {
    		pool.getConnection(function(err, connect) {
    			connect.query(..., function(err, result) {
    				if(err) {
    					reject(err);
    				}
    				else {
    					// Do create or update 
    					resolve(result);
    				}
    
    			}
    		}
    	}
    })
    
    const result = await createOrUpdateUsersPromise();
    const id = result.id;
    Ответ написан
    Комментировать