node.js - 将数据添加到 firebase 时,无法在将 header 发送到客户端后设置 header

标签 node.js firebase express

我一直有这个错误

Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client 
at ServerResponse.setHeader (_http_outgoing.js:533:11)

在我在 socket.io 中添加更新 firebase 代码之后

io.on('connection', socket => { 
... 

socket.once('myEvent', async (dataToSend) => {
 try {
    await db
    .collection('myCollection')
    .doc('myDoc')
    .update({keyToUpdate: dataToSend})
    } catch (err) {
       console.log(err)
    }
  }
}

我认为问题出在套接字上,所以我做了相同的逻辑,但是在套接字外部使用了 POST 路由,并得到了同样的错误,我尝试添加一个返回但没有成功

我怀疑这可能是因为这个函数是一个 promise 而我没有很好地处理异步行为,或者因为 socket.io 使服务器充当流,而这个 firebase 函数不喜欢那样。

我在代码中还有其他 firebase 函数,但它们是获取请求(.onSnapshot())错误仅发生在数据添加 firebase 函数(.set()、.add()、.update())

在这里希望得到一些帮助,谢谢。

最佳答案

已修复,不完全知道 onSnapshot 是如何工作的,所以每次更新时都会触发其回调,发送信息并触发错误。

更改为 .get().then() 并修复了它

关于node.js - 将数据添加到 firebase 时,无法在将 header 发送到客户端后设置 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68242632/

相关文章:

node.js - 是否可以使用快速静态路由进行验证?

javascript - 使用 Express 在中间件中传递数据的最佳方式

javascript - koa.js 基本应用总是返回 Not Found

node.js - Grunt 中的 NodeJS 环境变量

swift - tableview 不显示 firebase 用户

angular - 如何在 ionic 选择上获得多个值

node.js - 使用 Jade 渲染带动态链接的 iframe

node.js - NodeJS Sequelize - 错误的关系方向

java - 如何返回 DocumentSnapShot 作为方法的结果?

node.js - Express错误: EMFILE,打开的文件太多