javascript - 无法访问由 fire base 的当前用户电子邮件地址设置的 node.js 中的文档名称

标签 javascript node.js firebase google-cloud-functions

在 flutter 应用程序中将文档名称设置为当前用户的电子邮件地址,我如何访问 node.js 文件中的相同文档名称。

fire base 代码中的 flutter 应用程序的数据集

FirebaseAuth.instance.currentUser().then((user){
  Firestore.instance
      .collection('cards')
        .document(user.email)
      .collection('tokens').add({
  'email': 'test@email.com',
  '
  }).then((val){
  });

});

我想在 nodejs 文件中获取它,如何在这一行中访问?我应该在 user.email 中写什么来访问文档名称。我需要在 node.js 中检查用户身份验证吗?

exports.StripeSource =functions.firestore.document('cards/{user.email}/tokens/{tokenid}')......

这样做我可以获得文档名称 data 但只有静态文档名称 但如果我将其更改为 user.emailuser.uid (根据当前用户的电子邮件地址或用户 ID 更改,所有用户都不相同)所以我明白如何才能我得到了这种类型的文档名称。

exports.StripeSource =functions.firestore.document('cards/{data}/tokens/{tokenid}').onCreate(async (tokenSnap,context) => {
  const user_id = context.params.data;
  console.log('Document name:', user_id);....
..
}

最佳答案

您发布的 Node.js 片段将是您将如何创建云函数来监听集合中文档的更改。您可能想要的是 Admin SDK这将使您可以访问文档。该 SDK 的工作方式与客户端 SDK 非常相似:

const admin = require('firebase-admin');
admin.initializeApp({...});

const snap = await admin.firestore()
  .collection('cards').doc(email)
  .collection('tokens').doc(tokenId).get();

console.log(snap.data());

另外请注意,除非您有特殊原因,否则我建议从用户的 uid 而不是 email 中键入文档。这是一种更友好的 URL 格式,即使用户更改了他们的电子邮件地址也会保持不变。

关于javascript - 无法访问由 fire base 的当前用户电子邮件地址设置的 node.js 中的文档名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59217139/

相关文章:

node.js - 将文件存储在本地哪里,以便在删除 Electron 应用程序后不会删除它们?

android - 如何在 Android 中使用 Firebase 存储用户数据?

javascript - 自动完成仅显示来自特定国家或邮政编码的结果

javascript - 单击即可更改范围文本

javascript - Try/catch block 和未处理的 promise 异常

node.js - 运行 'Grunt' 时未将 HTML 文件添加到已编译文件夹 - Yeoman 脚手架

javascript - setTimeout 在 JavaScript 中未按预期工作

JavaScript slider

javascript - Firestore 文档 typescript doc.data() 未定义?

android - FIrebase Java/Android createUser 失败