我有一个基于react-electron-boilerplate的应用程序,使用相同的模式集。我的应用程序使用select * from friendlist
where userid = '100000006' or frienduserid='100000006' and frndstatuid='4'
作为持久层,连接到远程数据库以维持其状态。
要获取当前状态,我通常在我的一个动作控制器(mongodb
)中执行以下操作
app/actions/<whatever>.js
但是,这不一定写入数据库。我想要的是维护一个持久性状态,也就是说,只要它改变就把这个状态写入数据库(是的,我知道这可能对大型应用程序来说代价很高)。
使用redux和mongodb可以实现吗?
答案 0 :(得分:3)
虽然我从Ian提到的finalReducer
模式开始,但事实证明使用Redux中间件要容易得多:
import {createStore, combineReducers, applyMiddleware} from 'redux'
const persist = store => next => action => {
next(action)
persistData(store.getState())
}
const store = createStore(<reducer>, undefined, applyMiddleware(persist))
答案 1 :(得分:2)
绝对可以实现。在创建商店之前,我会将所有减速器组合成最终减速器。最终的缩减器将对任何动作起作用,并将状态保存到Mongo。一些伪代码作为例子:
import { createStore, combineReducers } from 'redux';
import <all of your other reducers>
const reducers = combineReducers({
<other reducers here>
});
const finalReducer = (state, action) => {
const nextState = reducers(state, action);
//use whatever module you use to write to mongo...
persistToMongo(nextState);
return nextState;
};
const store = createStore(finalReducer, undefined);
希望这足以让你的创意充满活力。如果您需要更多帮助或清晰度,请告诉我,否则,祝您好运!