2016-09-02 15 views
0

私はこのようなタイプがあります。更新状態フィールド

export interface RelatedBusinessState { 
relation : Relation 

declare type Relation = { 
_id?: string, 
root : string, 
oPrimary :string, 
nodes : [Ontology] 

}

declare type Ontology = { 
    id : string, 
    ont : string[] 
} 

と私の減速中に、私はこのように定義された状態を持っています

}

私のコンポーネントは、t通常はノードを挿入または削除します。データはmongo dbに格納され、dbへの読み書きは@Effectでサービス呼び出しによって行われます。

小さな変更があるたびにドキュメント全体を更新したくないのですが、@ addtosetなどです。したがって、@Effectはセレクタと、変更が必要な特定のフィールドについて十分に知る必要があります。

還元剤機能で状態を設定する最も良い方法は何ですか?状態は観測可能なので、変更は加入者に反映されます。オブジェクトにキーを追加した場合、edit:{_id:thisid、...} @Effect関数で、type 'Relation'にProperty 'edit'が存在しないというtypescriptエラーが発生します。

@Effectはデータを保存し、更新されたドキュメントを取得し、状態を更新するUPDATE_COMPLETEレデューサー関数にディスパッチします。

編集:私は明確にしようとします。私の誤解以外には何の問題もないかもしれません。しかし、ここに行く。

私は状態に加入しており、減速機で状態が変更されるとコンポーネントとビューが更新されます。

私のバックエンドデータストレージでは、コレクション内のドキュメントを更新するために変更されたデータのみが必要です。

ノードとオントロジは、コンポーネント内で頻繁かつ迅速に変更されます。単純に何かを追加したり削除したりする私は、ビューに変更を迅速に反映させたい。

したがって、コンポーネントのアクション呼び出しは、次のようになります。ここで、addNodeはアクションをディスパッチする関数です。

addNode({ id : token, ont : ['Customer']}); 

アクションの作成者は、次のようになります。データベース・コールが行われた場所

static ADD_NODE = '[Relations] Add Node'; 
addNode(node : Ontology) : Action { 
return { 
type : RelatedBusinessAction.ADD_NODE,  
payload : node 
} 
} 

@Effectsです。

@Effect nodeadd$ = this.updates$ 
.whenAction(RelatedBusinessActions.ADD_NODE 
.map<Relation>(toPayload) 

私の質問は何ですか?それは減速機に設定された更新された状態を返しますか、それともアクションのペイロードを返しますか?

+0

? – j2L4e

答えて

0

私の質問は何ですか?それは減速機に設定された更新された状態を返しますか、それともアクションのペイロードを返しますか?

これは単にaction.payloadを返します。あなたの質問は正確に何

export function toPayload(action: Action) { return action.payload; }

toPayload Method

関連する問題