我正在尝试创建一个云函数来写入Firebase数据库。应该很简单。我想编写并返回200。他们给出的示例在then回调中进行了重定向,但我不想重定向。不幸的是,我的函数无限期挂起,并将同一条消息写入数据库3、4、5、6次。
我很确定自己做错了退货。我试图从then回调中返回res.status = 200,但这也不起作用。
这是我目前拥有的:
exports.createEvent = functions.https.onRequest((req, res) => {
const name = req.query.name;
const description = req.query.description;
const location = req.query.location; //json? lat/lng, public,
const date = req.query.date;
// Push the new message into the Realtime Database using the Firebase Admin SDK.
return admin.database().ref('/Event')
.push({name : name, description : description, location : location, date : date});
});
答案 0 :(得分:1)
我建议您观看官方的有关云功能的视频系列(https://firebase.google.com/docs/functions/video-series/),尤其是有关Promises的第一个视频,标题为“学习带有Cloud Functions中的HTTP触发器的JavaScript承诺(Pt.1)”。
您将看到,对于HTTTS云功能,您必须向客户端发送回复(观看8:50的视频)。
因此,对代码进行以下修改应该可以解决问题:
exports.createEvent = functions.https.onRequest((req, res) => {
const name = req.query.name;
const description = req.query.description;
const location = req.query.location; //json? lat/lng, public,
const date = req.query.date;
// Push the new message into the Realtime Database using the Firebase Admin SDK.
admin.database().ref('/Event')
.push({name : name, description : description, location : location, date : date})
.then(ref => {
res.send('success');
})
.catch(error => {
res.status(500).send(error);
})
});