我正在尝试返回查询结果,但我总是未定义。我不确定我在这里做错了什么。我正在使用带有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;
}
答案 0 :(得分:1)
这个问题是db.transaction
是异步的,这意味着在其余代码继续运行时需要一些时间。因此,db.transaction
启动,然后立即返回尚未设置的sqlResults
变量。你需要做的是返回一个promise(这里的快速教程:https://developers.google.com/web/fundamentals/primers/promises)或者在回调中设置你的修改(tx.executeSql
)。只有这样才能得到结果并且可以使用。