Google cloud firestore HTTP云函数和事件驱动云函数能否访问Firestore中的同一集合?
我有一个事件驱动的云函数(用Node.js编写),每当存储桶发生变化时,它就会在Firestore中创建Google cloud firestore HTTP云函数和事件驱动云函数能否访问Firestore中的同一集合?,google-cloud-firestore,google-cloud-functions,Google Cloud Firestore,Google Cloud Functions,我有一个事件驱动的云函数(用Node.js编写),每当存储桶发生变化时,它就会在Firestore中创建视频集合。但是当我试图从HTTP函数访问相同的数据时,API抛出了一个401未经授权的错误 HTTP函数: exports.getVideos = (req, res) => { db.collection('video').get().then(querySnapshot => { return res.status(200).json({
视频集合。但是当我试图从HTTP函数访问相同的数据时,API抛出了一个401未经授权的错误
HTTP函数:
exports.getVideos = (req, res) => {
db.collection('video').get().then(querySnapshot => {
return res.status(200).json({
videos: querySnapshot.docs.map(doc => doc.data()),
total: querySnapshot.size
});
})
.catch(error => {
functions.logger.error('Error getting video details: ', error);
return res.status(500).json({ error });
});
};
API响应:401未经授权
<html>
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<title>401 Unauthorized</title>
</head>
<body text=#000000 bgcolor=#ffffff>
<h1>Error: Unauthorized</h1>
<h2>Your client does not have permission to the requested URL <code>/video/get-videos</code>.</h2>
<h2></h2>
</body>
</html>
我没有看到代码方面的任何问题,所以我想知道这是什么根源。可能是使用不同的服务帐户执行不同的云功能。其中一个具有必需的IAM角色/权限,而另一个则没有
另一个选项-您是否可以检查所有这些都发生在一个GCP项目中,并且两个云功能都应该与一个(且相同)firestore集合一起工作?如何称呼此HTTPS云功能?哪个网址?此外,您还可以共享云功能的全部代码。我们没有看到任何地方可以使用函数.https
来创建处理HTTP事件的函数。@RenaudTarnec此函数未使用Firebase SDK。这是一个普通的GCP云函数。你怎么知道这个函数实际上正在被调用?你有云函数的日志证明它是正确的吗?你确定你公开了该功能,以便可以从互联网上的任何地方访问它吗?我认为这与Firestore没有任何关系-您可以简单地删除查询以进行更好的调试;我和道格在一起。我怀疑问题可能在于调用的“Web客户端与云函数对话”部分,而不是“云函数与Firestore对话”部分。你能补充一些关于如何称呼它的额外细节吗?也许首先让你的函数返回一些硬编码的占位符JSON。@DougStevenson谢谢你提出这个问题。这正是问题所在。