首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法读取未定义的属性“transaction”。React Native

无法读取未定义的属性“transaction”。React Native
EN

Stack Overflow用户
提问于 2020-06-26 03:51:10
回答 1查看 494关注 0票数 1

我是第一次接触React-Native,我在GitHub上遵循了react-native-sqlite-storage上的步骤,但不幸的是,我被事务卡住了,我已经尝试过enablePromises,但它仍然不起作用。我有点不知所措,不知道该怎么做。

代码语言:javascript
复制
import React from 'react';
import SQLite from 'react-native-sqlite-storage';
import { StyleSheet, Text, View, ListItem } from 'react-native';
  
  export default function App() {
  
      let db = SQLite.openDatabase(
        {
          name: 'users',
          createFromLocation: 1,
        },
        successToOpenDB(),
        failToOpenDB()
      );
  
      function successToOpenDB() {
        db.transaction((tx) => {
          tx.executeSql('SELECT * FROM USERS', [], (tx, results) => {
            let dataLength = results.row.length;
            alert(dataLength);
          });
        });
      }
  
    function failToOpenDB(err) {
      console.log(err);
    }
  
    return (
      <>
        <View style={styles.header}>
          <Text style={styles.headerText}>Title</Text>
  
        </View>

      </>
    );
  };

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-26 04:02:51

您正在传递成功的回调successToOpenDB函数,同时连接到数据库并使用未定义的" db“,并且您收到错误"cannot read property transaction of undefined.So do not pass successToOpenDB function as a success callback”。

代码语言:javascript
复制
errorCB(err) {
  console.log("SQL Error: " + err);
},

successCB() {
  console.log("SQL executed fine");
},

openCB() {
  console.log("Database OPENED");
},

var db = SQLite.openDatabase({
          name: 'users',
          createFromLocation: 1,
        }, openCB, errorCB);
db.transaction((tx) => {
  tx.executeSql('SELECT * FROM Employees a, Departments b WHERE a.department = b.department_id', [], (tx, results) => {
      console.log("Query completed");

      // Get rows with Web SQL Database spec compliance.

      var len = results.rows.length;
      for (let i = 0; i < len; i++) {
        let row = results.rows.item(i);
        console.log(`Employee name: ${row.name}, Dept Name: ${row.deptName}`);
      }

      // Alternatively, you can use the non-standard raw method.

      /*
        let rows = results.rows.raw(); // shallow copy of rows Array

        rows.map(row => console.log(`Employee name: ${row.name}, Dept Name: ${row.deptName}`));
      */
    });
});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62583281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档