React Native中的Redux + Rest API + Realm JS

时间:2018-08-21 17:41:20

标签: react-native redux realm redux-thunk realm-mobile-platform

我正在开发一个通过REST API控制IOT设备的应用程序。 我在应用程序内部使用Realm数据库来保留由IOT传感器捕获的历史数据。我还决定使用它来保存有关用户和设备的信息。 redux-persist似乎不是最佳选择,因为该应用程序最终将处理历史数据的大表。

我现在正在使用Redux-Thunk构建我的Redux动作,我对理想的工作流程/数据流感到怀疑。我目前正在像这样的redux动作中调用领域:

function addNew(deviceIp) {
    const request = () => { return { type: c.ADD_REQUEST } };
    const success = (payload) => { return { type: c.ADD_SUCCESS, payload} };
    const failure = (payload) => { return { type: c.ADD_FAILURE, payload } };
    return async (dispatch,getState) => {
        dispatch(request());
        try {
            const res = await apiService.getIt(deviceIp + urls.general);
            // Convert responses to date before Realm Insertion
            const newDevice = {
                ...res.deviceInfo[0],
                host: deviceIp,
                manufacturingDate: new Date(res.deviceInfo[0].manufacturingDate),
                lastFwUpdateDate: new Date(res.deviceInfo[0].lastFwUpdateDate),
                firstLaunchDate: new Date(res.deviceInfo[0].firstLaunchDate),
                lastResetDate: new Date(res.deviceInfo[0].lastResetDate)
            };
            const addedDevice = await realmActions.createNew('Device',newDevice);
            dispatch(success(addedDevice));
        }
        catch (error)
        {
            dispatch(failure(error));
        }
    };
}

realmActions.createNew(collectionName, newEntry)是我创建的一种方法,用于将新条目添加到Realm DB中的指定collection中。我主要关注这种方法。

  • 在我看来,将对象同时写入Realm和Redux有点矫kill过正。但是,在用户关闭并重新打开应用程序的情况下,Realm将有助于保留这些数据。您如何看待我所采用的方法。您会提出更清洁或更智能的建议吗?

0 个答案:

没有答案