在本机中从sqlite存储返回查询结果时未定义

时间:2018-01-23 19:00:08

标签: javascript reactjs sqlite react-native

我正在尝试返回查询结果,但我总是未定义。我不确定我在这里做错了什么。我正在使用带有sqlite存储插件的native native。

let SQLite = require('react-native-sqlite-storage')
let db = SQLite.openDatabase({name : "db.v1.33", createFromLocation : "~db.db"});
let sqlResults;

export function GetQuestions(sqlType,questionsCount) {
    let sqlQuestions = `SELECT * FROM Questions WHERE Type IN (${sqlType}) ORDER BY RANDOM() LIMIT ${questionsCount}`

    db.transaction((tx) => {
        tx.executeSql(sqlQuestions, [], (tx, results) => {
            sqlSize = results.rows.length;
            sqlResults = results;
        });
    });

    return sqlResults;
}

1 个答案:

答案 0 :(得分:1)

这个问题是db.transaction是异步的,这意味着在其余代码继续运行时需要一些时间。因此,db.transaction启动,然后立即返回尚未设置的sqlResults变量。你需要做的是返回一个promise(这里的快速教程:https://developers.google.com/web/fundamentals/primers/promises)或者在回调中设置你的修改(tx.executeSql)。只有这样才能得到结果并且可以使用。