2

我正在尝试使用 Reflux 操作通过 React 表单发布一个新对象。那部分工作正常。该对象按预期发布,但是,当我尝试以编程方式获取该对象时,它似乎无法访问,除非我注销、重新启动本地服务器,或者有时甚至只是手动访问 api 页面。

关于何时可以获取对象以及何时不能获取对象,我似乎无法获得一致的行为。查看api页面然后返回我的应用程序页面似乎确实有某种效果,但我不知道为什么。也许有人可以为我阐明这一点。

可以肯定的一件事是 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

问题最终在于响应的 Cache-Control 标头具有 max-age=600。将其更改为 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 回答