Express Js Firebase SignOut()立即将状态200返回给客户端提取发布请求

时间:2019-09-27 23:25:27

标签: javascript node.js firebase express firebase-authentication

我正在使用客户端javascript上的Fetch向使用Express Js和Firebase Auth的服务器端javascript发出POST请求。 auth()。signOut()返回200代码,但是我的代码的.then部分从不执行,因为该函数立即将响应返回给客户端提取;因此,永远不要渲染我的下一个视图。仅在执行服务器端代码的.then部分之后,如何使服务器端代码将200状态返回给客户端代码?

这是我的代码:

服务器端:

var logoutController = {

    //post logout user function
    logout: function(req, res, next) {
        var context, view;

        firebase.auth().signOut().then(function(data){
            view = 'index';
            context = {
                error: false,
            };
            res.render(view, context);

        }).catch(function(error) {
            var errorCode = error.code;
            var errorMessage = error.message;
            view = 'index'; //Change to an error page
            context = {
                error: true,
            };
            res.render(view, context);
        });

    }, 

} //end logoutController

router.post("/logout", logoutController.logout);

客户端代码:

var button = document.getElementById("logoutButton");

button.addEventListener('click', function(e) {

    fetch('/logout', {
    method: 'POST',
    headers: {
        "Content-Type": "application/json"
    },
    })
    .then(function(response) {
      if(response.ok) {
        return;
      }
      throw new Error('Request failed.');
    })
    .catch(function(error) {
      alert(error);
    });

});

1 个答案:

答案 0 :(得分:1)

我发现的解决方案是在客户端使用:

window.location.pathname ='/'

要重定向到该页面,我希望用户注销后可以转到该页面。