我需要将我的值从请求正文存储到Cloud Firestore中,并在响应中发送回foruminsertdata.Name。但是我无法做到这一点。
const functions = require('firebase-functions');
const admin =require("firebase-admin");
admin.initializeApp(functions.config().firebase);
const db = admin.firestore();
exports.helloWorld = functions.https.onRequest((req, res) => {
if(req.method === 'POST'){
foruminsertdata = req.body;
db.collection('forum').add({
Name: foruminsertdata.Name,
Description: foruminsertdata.Description,
Heading: foruminsertdata.Heading,
PostedOn: foruminsertdata.PostedOn,
Status: foruminsertdata.Status,
})
.then(ref => {
console.log('Added document with ID: ', ref.id);
return res.status(200).json(
{
message: foruminsertdata.Name
});
})
.catch(err => {
console.log('Error getting documents', err);
});
res.json({
message: foruminsertdata.Status,
});
}
})
我不知道发生了什么...无论如何我总是得到输出
{
message: foruminsertdata.Status,
}
其中“ foruminsertdata.Status”具有我提供的某些值 但我希望输出为
{
message: foruminsertdata.Name
}
答案 0 :(得分:0)
您的函数将立即向客户端返回foruminsertdata.Status
,而无需等待数据库操作的承诺解决。任何返回promise的函数都是异步的,并且会立即返回。执行将继续在您附加到它的回调中。
我不确定为什么在代码中有两次调用res.json()
的问题,但是如果您只想在查询完成后发送响应,则将第二个删除,然后在查询完成。您可能还希望在catch
回调中发送响应以指示错误。