P.....k
P.....k
#programowanie #nodejs #javascript #sql #mysql

W jaki sposób mogę wyciągnąć wartość zmiennej userInfo z funkcji getFromDatabase? Po całym dniu szukaniu odpowiedzi w internecie domyślam się, że ma to związek z asynchronicznym charakterem takiej operacji i że nie można tego zrobić returnem a należny użyć promisów, callbacków, asynców itp, jednak po wielu próbach nie udało mi się zrobić tak żeby działało ( ͡° ͜ʖ ͡°)

function getFromDatabase() {
database.query('SELECT * FROM users WHERE id = 1', function(error, results, fields) {
userInfo = results[0];
});
}

Ktoś coś?
  • Najlepsze
  • Wszystkie komentarze
magic96
magic96
@Ponvrak: createvar musi przyjąć argumenty, jako pierwszy wsadź userInfo, przy wywołaniu nie potrzebujesz nulla
P.....k
P.....k
@magic96: nie działa
magic96
magic96
@Ponvrak: przekaż sobie callback w argumencie funkcji, albo załatw to przy użyciu Promises, jak człowiek
P.....k
P.....k
@magic96: próbowałem na wiele sposobów ale nie udało mi się zrobić tak żeby działało.
magic96
magic96
@Ponvrak: pokaż ( ͡° ͜ʖ ͡°)
P.....k
P.....k
@magic96 na przykład tak:

function getFromDatabase(callback) {
database.query('SELECT * FROM users WHERE id = 1', function(error, results, fields) {
userInfo = results[0];
callback(null,
itdrwal
itdrwal
@Ponvrak: zobacz temat Promisów oraz async/await. Tak się to teraz robi. Polecam ;)
itdrwal
itdrwal
@itdrwal: daj znać, jeżeli sobie nie poradzisz to Ci to przepiszę jak będę przy kompie. Może na przykładzie będzie Ci łatwiej.
P.....k
P.....k
@itdrwal: nie radzę sobię. Wydaje mi się, że już dobrze rozumiem zasadę działania promisów i async/awaitów i w normalnych metodach potrafię je wykorzystać, jednak jeżeli chodzi o zapytanie do bazy danych query to zaczynają się problemy.
Kiciuk
@Ponvrak: Przyjmuje że używasz liba mysql z npm

https://pastebin.com/NZjXbuGt

Jak widzisz utworzyłem zmienną getFromDatabase następnie przypisałem do niej funkcję przyjmującą jedną zmienną wejściową.
W środku funkcji zwróciłem Promise wewnątrz której