node.js - 无法在 Cloud Functions 的 HTTP 触发器中访问 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
}
解决方案
您的函数会立即返回foruminsertdata.Status
给客户端,而无需等待数据库操作的承诺得到解决。任何返回 promise 的函数都是异步的并立即返回。执行将在您附加到它的回调中继续。
我不确定为什么您res.json()
的代码中有两个调用,但如果您只想在查询完成后发送响应,您将删除第二个并在查询完成后发送响应。您可能还希望在catch
回调中发送响应以指示错误。
推荐阅读
- swift - 我需要能够在 SwiftUI 中打开相机并在应用程序中拍照
- python - 计算 S3 StreamingBody 的 sha256 与 sha256sum 返回的校验和不同
- python - AttributeError: 'Downloader' 对象没有属性 '_PlaylistDownloader__server'(属性连接问题)
- java - 在线作业的高级字符串操作
- powershell - 使用 powershell 获取当前登录的 Web 会话 cookie
- java - 将值插入 HashBasedTable
- security - 为什么将密码哈希和盐存储在同一个地方被认为是可以的?
- python - 在 django 中与单元测试分开运行集成测试
- asterisk - Asterisk 看不到队列成员
- scala - 使 Scala 类使用宏扩展 trait/abstract 类