2

Reflux アクションを使用して React フォーム経由で新しいオブジェクトを投稿しようとしています。その部分はうまく機能しています。オブジェクトは期待どおりに投稿されていますが、そのオブジェクトをプログラムで取得しようとすると、ログアウトするか、ローカル サーバーを再起動するか、場合によっては API ページに手動でアクセスしない限り、アクセスできないようです。

オブジェクトをいつ取得できるか、いつ取得できないかについて、一貫した動作を取得できないようです。APIページを表示してからアプリページに戻ると何らかの効果があるようですが、その理由については途方に暮れています。おそらく、誰かが私のためにこれに少し光を当てることができます.

確かなことの 1 つは、POST 要求が適切に機能していることです。オブジェクトを手動で確認すると、オブジェクトは常にそこにあるからです。

また、以下のコードで気付いた場合は、API ページの最後のオブジェクトが何であるかを確認し、コンソールは以前の最後の項目であったものを返します。そのため、プログラムで API ページにアクセスできますが、作成したオブジェクトはそこにありません (ただし、ページに手動でアクセスした場合)。リフレッシュしても同じ結果になることにも注意してください。

問題が発生する可能性のある場所、またはこれが発生する理由はありますか?

アクションは次のとおりです。

MainActions.getUserProfile.listen(function(user) {
  request.get('/api/page/').accept('application/json').end( (err, res) => {
    if (res.ok) {
        var profiles = res.body;
        var filteredData = profiles.filter(function (profile) {
            if (profile) {
                return profile.user === user
            }
            else {
                console.log('No Profile yet.')
            }
        });

        if (filteredData[0]) {
            var data = {
                user: filteredData[0].user,
                ...
            };
            ... // other actions
        } else {
            console.log(profiles[profiles.length - 1].user)
        }

    } else {
        console.log(res.text);
    }
  });
});
4

1 に答える 1

0

問題は、max-age=600 を持つ応答の Cache-Control ヘッダーにありました。それを max-age=0 に変更すると、問題が解決しました。この状況では、キャッシュされた応答を提供してもあまり意味がないので、これをシリアライザーの ViewSet に追加しました。

def finalize_response(self, request, *args, **kwargs):
    response = super(MyApiViewSet, self).finalize_response(request, *args, **kwargs)
    response['Cache-Control'] = 'max-age=0'
    return response
于 2015-06-13T20:41:13.967 に答える