umc-managed-store
Version:
extend umc store with structure-ensure and auto-clear to make store safety
50 lines (41 loc) • 1.44 kB
JavaScript
const util = require('util');
const ManagedStore = require('..');
const Types = ManagedStore.Types;
let options = {
structure: {
members: Types.mapOf('member', {
}),//所有的会员
feeds: Types.mapOf('feed', {
feedId: Types.idOf('feed'),
memberId: Types.idOf('member'),
}),//所有的动态
feedRelations: {//所有的feed关系数据(详情里的)
[Types.idOf('feed')]: {
reply: {rows: Types.idArrayOf('feed')},
hotReply: {rows: Types.idArrayOf('feed')},
liked: {rows: Types.idArrayOf('member')},
}
},
auth: {id: Types.idOf('member')},//登陆者信息, id/token等
portal: {//会员自身的一些数据, 结构均一致
feed: {rows: Types.idArrayOf('feed'), count: 0},
follower: {rows: Types.idArrayOf('member'), count: 0},
},
update: {
version: '',
local: {version: '', name: ''},
remote: {version: '', name: '', app: ''}
},//自动更新相关
ui: {selectedMainBar: 'home'},//界面相关
}
}
const store = ManagedStore.create(options)
console.log(util.inspect(store.state, {depth: null}));
let newState = Object.assign({}, store.state);
newState.feeds['123'] = {id: '123', content: 'hello'};
newState.portal.feed.rows.push('123');
store.setState(newState);
console.log(util.inspect(store.state, {depth: null}));
store.clear();
console.log(util.inspect(store.state, {depth: null}));