【问题标题】:undefined when returning the query results from sqlite storage in react native [duplicate]从反应原生的sqlite存储返回查询结果时未定义
【发布时间】:2018-07-02 16:48:09
【问题描述】:

我正在尝试返回查询结果,但总是未定义。我不确定我在这里做错了什么。我正在使用带有 sqlite 存储插件的 react 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;
}

【问题讨论】:

    标签: javascript reactjs sqlite react-native


    【解决方案1】:

    这样做的问题是db.transaction 是异步的,这意味着它需要一些时间才能完成,而其余的代码会继续运行。因此,db.transaction 被启动,然后它立即返回尚未设置的 sqlResults 变量。您需要做的是返回一个承诺(此处为快速教程:https://developers.google.com/web/fundamentals/primers/promises)或设置在回调(tx.executeSql)中进行修改。只有这样,结果集才可用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-06
      • 2021-06-22
      • 2015-05-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多