【问题标题】:How to create data related to user in Firebase Firestore如何在 Firebase Firestore 中创建与用户相关的数据
【发布时间】:2018-05-20 15:19:26
【问题描述】:

我在我的应用程序中使用匿名用户,并且有一个函数只使用 uid 创建 user

export const createUserObject = functions.auth.user().onCreate((user, context) => {
  const userData = {"uid": user.uid}
  admin.firestore().collection("users").doc(user.uid).set(userData).then(writeResult => {
    console.log('User Created result:', writeResult);
  }).catch(err => {
    console.log(err);
  });
});

现在我想为用户添加另一个端点来创建note。我打算用contentuid 两个字段记录它自己的集合,以供创建它的用户参考。

Firebase 函数有没有办法为触发的用户检索uid?所以我可以写这样的东西,或者我必须让用户把它和注释一起发送?

export const addNote = functions.https.onRequest((request, response) => {

  if(request.method !== "POST"){
    response.sendStatus(404)
    return;
  }
  const content = request.body.content

  const data = {
    content: content,
    uid: HOW_CAN_I_GET_CURRENT_USER
  };

  let db = admin.firestore()

  return db.collection("notes").add({content: content}).then((ref) => {
     response.sendStatus(201)
  })
});

【问题讨论】:

  • 触发HTTP功能的用户可通过req.headers.authorization获取。请参阅此答案以获取示例链接:stackoverflow.com/questions/42751074/…
  • 您实际上并不需要云功能。 Firebase 鼓励直接从客户端操作数据,而不需要后端代码。因此,您可以像创建用户文档一样创建笔记。
  • @RicardoSmania 所以我创建注释并将 uid 放在客户端?客户自己管理关系?
  • @sarunw 是的,因为您已经在对用户进行身份验证,您可以使用客户端的 uid。您可能还应该定义安全规则,以便用户只能查看和更改他们拥有的数据。
  • @FrankvanPuffelen 您能否发布您的解决方案作为答案?

标签: javascript firebase firebase-authentication google-cloud-functions


【解决方案1】:

触发 HTTP 功能的用户可通过req.headers.authorization 获得。

请参阅此答案以获取示例链接以及使用可调用 HTTPS 函数的另一个选项:How to protect firebase Cloud Function HTTP endpoint to allow only Firebase authenticated users?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    • 2020-01-05
    • 2021-09-17
    • 1970-01-01
    • 2018-03-20
    • 2019-11-04
    相关资源
    最近更新 更多