代码之家  ›  专栏  ›  技术社区  ›  Spedwards

节点函数不返回任何SQLITE3

  •  0
  • Spedwards  · 技术社区  · 6 年前

    我试图在项目中使用sqlite3,但遇到了一个问题。我的函数没有返回任何值。我添加了一个 console.log 在返回语句之前,奇怪的是,它可以工作,但是日志 之后 函数已返回。

    console.log(getNext());
    
    function establishConnection(callback) {
        const db = new sqlite3.Database('database.db');
        db.serialize(() => {
            callback(db);
        });
        db.close();
    }
    
    function getNext() {
        establishConnection(db => {
            db.get('SELECT col1, col2 FROM table ORDER BY priority LIMIT 1;', (err, row) => {
                console.log([row.col1, row.col2]); // works
                return [row.col1, row.col2];       // doesn't work
            });
        });
    }
    

    我不是node方面的专家,但这似乎是应该起作用的,我不明白为什么不起作用。有人能向我解释一下,并可能提供解决方案吗?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Andy Gaskell    6 年前

    getNext promises async/await

    getNext(result => console.log(result));
    
    function establishConnection(callback) {
        const db = new sqlite3.Database('database.db');
        db.serialize(() => {
            callback(db);
        });
        db.close();
    }
    
    function getNext(callback) {
        establishConnection(db => {
            db.get('SELECT col1, col2 FROM table ORDER BY priority LIMIT 1;', (err, row) => {
                callback([row.col1, row.col2]);
            });
        });
    }