Angular中如何获取SQLite executeSql的返回值——EXISTS查询结果的取值方法
获取SQL EXISTS查询返回值的解决方案
嘿,我来帮你搞定这个问题!你现在用EXISTS查询判断记录是否存在,结果返回的对象键是一整串SQL语句,直接按键名取值确实很麻烦对吧?下面给你几个实用的解决办法:
方法1:给查询结果起别名(最优解)
这是最稳妥的方式,修改你的SQL语句,给EXISTS的结果指定一个清晰的别名,比如recordExists:
this.offlineDBService.db .executeSql( `SELECT EXISTS (SELECT Id FROM Session WHERE Id = ${Id}) AS recordExists`, [] ) .then((val) => { const exists = val.rows.item(0).recordExists; console.log("是否存在记录:", exists); // 这里会输出1或0 })
这样返回的对象键就变成了recordExists,直接通过这个固定的键名就能拿到你要的1或0,后续就算SQL语句有调整,只要别名不变,取值逻辑就不用改。
方法2:直接提取对象的第一个值(无需修改SQL)
如果暂时不想改动SQL语句,也可以用JavaScript的对象方法直接提取值:
用Object.values()
this.offlineDBService.db .executeSql( `SELECT EXISTS (SELECT Id FROM Session WHERE Id = ${Id})`, [] ) .then((val) => { const resultObj = val.rows.item(0); const exists = Object.values(resultObj)[0]; console.log("是否存在记录:", exists); })
用Object.keys()
this.offlineDBService.db .executeSql( `SELECT EXISTS (SELECT Id FROM Session WHERE Id = ${Id})`, [] ) .then((val) => { const resultObj = val.rows.item(0); const key = Object.keys(resultObj)[0]; const exists = resultObj[key]; console.log("是否存在记录:", exists); })
这两种方法都能直接拿到对象里的第一个值,也就是你要的1或0,适合快速临时解决问题。
内容的提问来源于stack exchange,提问作者Shanu
相关产品推荐
相关产品推荐

