React Native [iOS]数据库选项

时间:2017-05-17 05:25:08

标签: database sqlite reactjs react-native asyncstorage

我希望在React Native中创建一个iOS应用程序,并想知道什么是适合我的应用程序的最佳数据库选项。

该应用程序将受到~300个数据对象的支持,这些对象将从远程服务器获取为json对象。这300个对象的属性存在一些差异。因此,我对建立一个不灵活的数据库模式犹豫不决。

理想情况下,我只想要一个包含2个属性的数据库: 1)id(例如:从1到300) 2)数据(例如:{" hello":" world"})

给出上述有关我应该使用哪种反应原生数据库模块的任何建议?

由于

1 个答案:

答案 0 :(得分:1)

根据我在之前成功的react-native项目中的经验,您可以使用AsyncStorage,这很简单但功能强大,可以存储您想要的任何内容!

此外,您还应该使用fluxredux,这将为您提供商店解决方案,您可以在其中阅读&轻松存储与AsyncStorage相关的数据(无处不在,每页)!

步骤是(关于如何组织数据和构建逻辑的主要流程):

0 / 导入库

import React, { Component } from 'react';
import {
  AsyncStorage,
  // ...
} from 'react-native';

1 / 从您的API获取数据或某处(本地文件等),然后将数据写入(保存)到AsyncStorage:

async firstWriteFavorite() {
    fetch("YOUR_API_URL", {method: "GET", headers: {'Cache-Control': 'no-cache'}})
        .then((response) => response.json())
        .then((responseJson) => {
            try {
                // make sure you write a STRING into AsyncStorage, 
                // and also be careful which key of the JSON should be written, the below line is just a good example:
                await AsyncStorage.setItem("@PROJECT_NAME:your_favorite_array", JSON.stringify(responseJson.response));
                // if you use flux or redux here, you can perform some action here, then you can load the data everywhere later:
                // FavoriteActionCreators.set_favorite(responseJson.response);
            } catch (error) {
                console.log('AsyncStorage error: ' + error.message);
            }   
        })
        .catch((error) => {
            console.log("Error in first getting ajax data!", error);
        }
    );  

}   

2 / AsyncStorage 中检索数据:

async loadFavorite() {
    try {
        var fav_array_string = await AsyncStorage.getItem("@PROJECT_NAME:your_favorite_array");
        // the above returned value is a STRING, then you can split it, or do whatever based on the structure you have written  
        var real_fav_id_array = fav_array_string.split('YOUR_SEPARATOR');
        // ...
    } catch (error) {
        console.log('AsyncStorage error: ' + error.message);
    } 
}               

3 / 当您需要更新数据时,首先检索数据,然后将数据绑定到变量并对该变量进行更改,然后将新数据写入{{1 }}

AsyncStorage

以上代码是从我的真实项目代码中复制并缩短的,请尝试告诉我您是否有任何问题!