【发布时间】:2020-05-30 22:37:08
【问题描述】:
我目前正在尝试构建一个 firebase 云功能(使用 express),其中: - 我检查数据库中是否存在使用 - 根据是否存在向电报 API 发送消息
问题是,当我尝试运行该功能时,Firebase 日志能够让 console.log 告诉我用户是否存在,但不会发送到电报。错误日志说:
[2020-02-15T10:41:34.568Z] @firebase/数据库:FIREBASE 警告: 用户回调引发了异常。错误:之后无法设置标题 他们被发送。 在 validateHeader (_http_outgoing.js:491:11) 在 ServerResponse.setHeader (_http_outgoing.js:498:3) 在 ServerResponse.header (/srv/node_modules/express/lib/response.js:771:10) 在 ServerResponse.send (/srv/node_modules/express/lib/response.js:170:12) 在 ServerResponse.json (/srv/node_modules/express/lib/response.js:267:15) 在 ServerResponse.send (/srv/node_modules/express/lib/response.js:158:21) 在 firebase.database.ref.child.once.snapshot (/srv/index.js:59:40) 一次回调(/srv/node_modules/@firebase/database/dist/index.node.cjs.js:4933:51) 在 /srv/node_modules/@firebase/database/dist/index.node.cjs.js:4549:22 在 exceptionGuard (/srv/node_modules/@firebase/database/dist/index.node.cjs.js:698:9)
有人可以帮忙吗?谢谢!
app.post("/", async (req, res) => {
const isTelegramMessage =
req.body &&
req.body.message &&
req.body.message.chat &&
req.body.message.chat.id &&
req.body.message.from &&
req.body.message.from.first_name &&
req.body.update_id;
const user_id = req.body.message.from.id
firebase.initializeApp(firebaseConfig);
let myUser;
const chat_id = req.body.message.chat.id;
const {
first_name
} = req.body.message.from;
// Check User Exists
firebase
.database()
.ref("/telegramUsers")
.child(req.body.message.from.id)
.once("value", snapshot => {
if (snapshot.exists()) {
myUser = true;
console.log("exists!", myUser);
return res.status(200).send({
method: "sendMessage",
chat_id,
text: `Welcome Back ${first_name}`
});
} else {
myUser = false;
console.log("does not exist!");
return res.status(200).send({
method: "sendMessage",
chat_id,
text: `Hello ${first_name}`
});
}
});
return res.status(200).send({
status: "not a telegram message"
});
});
【问题讨论】:
-
您在消息发送之前返回,然后再次返回
-
在最后一个
return之前写console.log() 你就会明白这个问题。你会得到两个日志——一个“存在”,另一个你会写
标签: javascript firebase express firebase-realtime-database telegram