【发布时间】:2020-07-22 13:06:58
【问题描述】:
所以每次我需要使用我的数据库 SQLite 时,我都会创建一个函数,我给这个函数 3 个参数,然后它会为我返回结果。
问题是函数返回一个promise,而且我尝试更新一些变量的值并且它们没有改变:
让我向您展示我的代码,然后更好地向您解释我遇到的问题:
//Down here I'm using the function I made, I'm passing as parameters my
// connection, my SQL string, and my arguments
(Main.js)
const resultSQL = sqlExecute(db,'SELECT * FROM tbl_diarys',[]);
console.log(resultSQL)
----- // Now this down here is the function I made------------------------------------------------------
const { Alert } = require("react-native")
const sqlExecute = async (dbConection,sqlQuery,arg,)=> {
let resultSQL = []
let test = 'x' // variable that i created to make a test changing it's value
await dbConection.transaction((tx)=>{
tx.executeSql(sqlQuery,arg,(tx,results)=>
{
Alert.alert('', 'SQL executed with success')
var len = results.rows.length;
var vectorResults = []
for (let i=0; i<len; i++){
let row = results.rows.item(i);
vectorResults.push(row)
}
console.log(vectorResults) // Showing the results from my database
test = 'y' // trying to change the value of variable "test" from 'x' to 'y'
resultSQL = [...vectorResults]; // cloning my results from database to my variable resultSQL
},(error)=>{Alert.alert('Some error had happened'); console.log(error)})
})
console.log(test) // showing the value of my variable "test"
console.log(resultSQL) // showing the value of my variable resultSQL
return (resultSQL);
}
module.exports=sqlExecute
这是我的控制台.LOG this is a picture of my console.log
所以我的问题是:
1º 为什么我的变量“test”从未将其值更改为“y”?
2º 为什么我的函数返回一个承诺?既然我把变量resultSQL放回了?
3º 为什么我的变量 resultSQL 也从未改变它对我的数据库结果的值?
正如你们所看到的,我与数据库的连接运行良好,返回了一个带有我的 SQL 查询结果的向量,但我无法返回这个向量,而是我的函数返回了一个承诺。
谢谢大家帮助我,祝大家有个美好的一天!
【问题讨论】:
标签: javascript function sqlite react-native