0

私はこのようなタイプを持っています:

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

}

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

私のレデューサーでは、次のように定義された状態があります。

export interface RelatedBusinessState {
relation : Relation

}

コンポーネントはこのドキュメントのフィールドを更新し、通常はノードを挿入または削除します。データは mongo db に保存され、db への読み取りと書き込みはサービスへの呼び出しを介して @Effect で行われます。

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

レデューサー関数で状態を設定する最良の方法は何ですか? 状態は監視可能であるため、変更はすべてのサブスクライバーに反映されます。オブジェクトにキーを追加すると、たとえば edit : {_id : thisid,...} @Effect 関数で、プロパティ 'edit' がタイプ Relation に存在しないという 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)

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

4

1 に答える 1

0

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

action.payload を返すだけです。

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

toPayload メソッド

于 2016-10-30T19:05:02.467 に答える