Я новичок в React Native и не понимаю, как использовать эти два пакета вместе!
react-native-sqlite-storage
из https://github.com/andpor/react-native-sqlite-storage
и
rn-fetch-blob
от https://github.com/joltup/rn-fetch-blob
Мои проблемы заключаются в следующем:
- Я не знаю, как преобразовать мои извлеченные файлы csv в sqlite db
- Я не Я не знаю, как сделать так, чтобы пакет sqlite-storage читался по указанному c пути
Мне было интересно, может ли мне помочь кто-нибудь, кто имеет опыт работы с этими пакетами! Большое вам спасибо !!!
В настоящее время я беру кучу файлов .csv и помещаю их в папку с именем «all_lists», используя RNFetchBlob.
let response = await RNFetchBlob.config({ trusty: validateCertificate, fileCache: true, appendExt: 'zip'})
.fetch('GET', ... )
.then((res) => { source = res.path(); console.log('The file saved to ', res.path()) })
.catch(async (error) => { console.error(error); });
target = source.substring(0, source.lastIndexOf("/") + 1) + 'all_lists';
console.log('this is target folder: ' + target);
//Creates a folder called all_lists
RNFetchBlob.fs
.mkdir(target)
.catch((err) => { console.log(err); });
await unzipWithPassword(source, target, cred);
^ Приведенный выше код будет дамп связка файлов .csv по этому пути: /Users/[username]/Library/Developer/CoreSimulator/Devices/61FC6F07-B7D1-42F7-B13A-3D6EA68C2054/data/Containers/Data/Application/48E5B003-4709-4EAB-B7B9-DB2F1E55EA6A/Documents/RNFetchBlob_tmp/all_lists
В настоящее время для запроса SQL у меня есть:
import SQLite from 'react-native-sqlite-storage';
export async function getSQLData() {
console.log('Opening Database...: ')
try {
const db = await new Promise((resolve, reject) => {
const db = SQLite.openDatabase(
{ name: 'users.db', createFromLocation: 1 },
() => resolve(db),
reject
)
})
console.log('Success Opening DB')
console.log('Executing user query...')
const results = await new Promise((resolve, reject) => {
db.transaction(tx => {
tx.executeSql(
'SELECT * FROM users',
[],
(tx, results) => resolve(results),
reject
)
})
})
//Create a local Array
const localArray = []
// Go through each item in dataset and push into local Array
for (let i = 0; i < results.rows.length; i++) {
localArray.push(results.rows.item(i))
}
//Return localArray
return localArray
//Catch any errors and return false
} catch (e) {
console.log('SQL Error: ', e)
return false
}
}
Однако отладчик говорит:
Looking for prepopulated DB at:
/Users/alanchen/Library/Developer/CoreSimulator/Devices/61FC6F07-B7D1-42F7-B13A-
3D6EA68C2054/data/Containers/Bundle/Application/3F2ECB56-3A6A-42AA-B62E-
C42B6E1BED93/test.app/www/users.db