“Promise<SQLiteDatabase>”类型上不存在属性“transaction”。ts(2339)

问题描述 投票:0回答:1

我是React Native新手,我正在尝试连接sqlite,但是在执行事务时出现以下错误,我已经放置了一些console.log,但在事务后无法输入。

import { useEffect, useState } from "react";
import { Text, View } from "react-native";
import SQLite from "react-native-sqlite-storage";

export default function ListProducts(props: unknown) {
    const [names, setNames] = useState<string[]>([]);

    useEffect(() => {
        const initializeDatabase = async () => {
            try {
                const db = SQLite.openDatabase({
                    name: "mydata",
                    createFromLocation: 1
                });
                console.log('asdasd');
                db.transaction(tx => {
                    console.log('transaction');
                    tx.executeSql('CREATE TABLE IF NOT EXISTS products (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)');
                });
            } catch (error) {
            }
        };

        initializeDatabase();
    }, []);

    return (
        <View>
            {names.map((name, index) => (
                <Text key={index}>{name}</Text>
            ))}
        </View>
    );
}

我希望我能很好地执行交易并向sqlite进行查询

typescript react-native sqlite
1个回答
-1
投票

我尝试使用await,但没有成功

import { useEffect, useState } from "react";
import { Text, View } from "react-native";
import SQLite from "react-native-sqlite-storage";

export default function ListProducts(props: any) {
    const [names, setNames] = useState<string[]>([]);
    useEffect(() => {
        const initializeDatabase = async () => {
            try {
                const db = await SQLite.openDatabase({
                    name: "mydata.db",
                    createFromLocation: 'default'
                });
                db.transaction(tx => {
                    tx.executeSql('CREATE TABLE IF NOT EXISTS products (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)');

                tx.executeSql(
                    "SELECT * FROM products",
                    [],
                    (_, result) => {
                        // Obtener los nombres y actualizar el estado
                        const productNames = Array.from(result.rows).map(row => row.name);
                        setNames(productNames);
                    },
                    (_, error) => {
                        console.error("Error al consultar productos:", error);
                    }
                );
            });
        } catch (error) {
            console.error("Error al abrir la base de datos:", error);
        }
    };

    initializeDatabase();
}, []);

return (
    // Renderiza tu componente aquí
    <View>
        {names.map((name, index) => (
            <Text key={index}>{name}</Text>
        ))}
    </View>
);

}

© www.soinside.com 2019 - 2024. All rights reserved.