Javascript-форум (https://javascript.ru/forum/)
-   Node.JS (https://javascript.ru/forum/node-js-io-js/)
-   -   sqlite3 async/await не возвращается результат (https://javascript.ru/forum/node-js-io-js/69388-sqlite3-async-await-ne-vozvrashhaetsya-rezultat.html)

thevalakas 19.06.2017 12:15

sqlite3 async/await не возвращается результат
 
'use strict';

const sqlite = require('sqlite3').verbose();

const db = new sqlite.Database('database.db');

module.exports.register = function (from) {
    db.all("SELECT * FROM users WHERE tele_id = ?", [from.id], function (err, rows) {
        if (rows.length < 1) {

            if (from.last_name === undefined) {
                from.last_name = null;
            }

            if (from.username === undefined) {
                from.username = null;
            }

            db.run("INSERT INTO users (tele_id, first_name, last_name, username) VALUES (?, ?, ?, ?)", [from.id, from.first_name, from.last_name, from.username]);
        }
    });
};

module.exports.balance = async function (tele_id) {
    let balance;

    await db.get("SELECT * FROM users WHERE tele_id = ?", [tele_id], (err, result) => {
        balance = result.balance;
    });

    return balance; // Возвращает Promise { <pending> } а не balance
};


Функция balance должна возвращать баланс пользователя, а возвращает Promise { <pending> }

Alexandroppolus 19.06.2017 18:25

какая-то странная мешанина колбэков и промисов.

async/await всего лишь тонкая обертка над промисами, для "более удобного" кодинга в стиле, напоминающем синхронный код (но по факту не являющемся таковым). Ты уверен, что точно знаешь, как оно работает?


Часовой пояс GMT +3, время: 21:27.