NodeJS和Firebase身份验证错误。错误[ERR_HTTP_HEADERS_SENT]:将标头发送到客户端后无法设置标头

时间:2018-10-18 11:30:58

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

我正在使用Firebase进行身份验证,使用NodeJS构建Web应用程序,并且在测试该应用程序时遇到错误。

如果某个用户登录了该应用程序,则一切正常,但是当我尝试以另一个用户登录而又第一个用户仍在登录时,该应用程序崩溃并抛出标题上指示的错误。

我只是使用计算机在本地测试我的应用程序,并使用两个不同的浏览器登录两个不同的用户。我的第一个问题是:我可以实际执行此操作,Node是否可以独立处理两个用户?如果可以的话,我为什么会收到此错误?

我认为该应用程序引发此错误,因为即使只有一个用户在发出请求,Node仍在尝试响应两个用户,但是我不确定这是否是原因。

这是我的代码:

  app.post('/', (req, res)=>{
  const email  = req.body.email;
  const password = req.body.password;
  const promise = auth.signInWithEmailAndPassword(email, password);
  promise.catch(e => console.log(e.message));
  firebase.auth().onAuthStateChanged(firebaseUser => {
    if (firebaseUser){
      User.find({userId: firebaseUser.uid}, (err, user)=>{
        userId = user[0].userId;
      });

      Item.find({date: {"$gte": moment().startOf('day'), "$lt": moment().endOf('day')}, user: firebaseUser.uid}, (err, allItems)=>{
        if (err) {
          console.log(err);
        } else {
          var total = 0;
          allItems.forEach((item)=>{
            total = total + item.calories;
          });

          Limit.find({}, (err, allLimit)=>{
            allLimit.forEach((item)=>{
            limit = item.limit;
          console.log('New limit: '+ limit);
            });
          });

          res.render('itemlist', {'itemlist': allItems, total, limit, limitId});
        }
      });
    } else {
       console.log('not log in');
    }
  })
});

0 个答案:

没有答案