【问题标题】:how to add data for all authenticated users in firestore flutter如何在firestore颤振中为所有经过身份验证的用户添加数据
【发布时间】:2021-10-17 11:05:23
【问题描述】:

我正在寻找一种方法来为我的应用的所有经过身份验证的用户添加/上传数据(全局数据)到 Firestore。我猜它就像一个可以完成这项工作的“管理应用程序/面板”?我不太确定,因为我还没有这样做,而且是 firebase firestore 的新手。

我以前的方法是:- 每当 用户登录/登录时,包含所有数据(数据列表类型)的本地文件将被上传到该特定经过身份验证的用户的文档。如果是现有用户,我不会再次上传/添加常用数据。

如您所见,这是一种非常复杂/糟糕的方法。这就是为什么我正在寻找一种更好的方法,例如 admin 方法,它可以完成向所有用户添加公共数据的工作,而无需我每次都检查。

(我什至想过手动操作,比如从 firestore 网站手动添加数据,但在验证用户身份之前无法获取用户 uid)。

【问题讨论】:

  • 您要添加到每个用户的数据是静态的还是可以在用户每次登录时更改?
  • @PeterKoltai 它是静态的,只是一个字段可以改变,它是一个对象列表,如果用户将其标记为最喜欢的项目,我只需将其设置为 isFavtrue。就是这样。
  • 您考虑过使用 Firebase 触发器吗?例如,如果您有一个 users 集合,您可以在插入新用户文档时执行一个函数并添加额外的初始数据。
  • @PeterKoltai 不,但我会看看!另外,我正在考虑实施管理员角色?这可以帮助我从管理面板为所有经过身份验证的用户添加数据吗?你怎么看?如何为每个经过身份验证的用户添加相同的数据?
  • 如果您只想为每个用户添加修复数据,则不需要管理员角色,因为在 Firestore 触发器中您将使用 Admin SDK,您不需要其他身份验证。如果您需要从前端执行管理功能,您肯定需要一个管理员角色,使用自定义声明。

标签: firebase flutter google-cloud-firestore


【解决方案1】:

要在创建新用户时执行一些逻辑,请设置 Firebase Functions 并创建如下函数(假设您有一个名为 users 的集合):

const functions = require('firebase-functions');
const admin = require('firebase-admin');

// trigger on Firebase user creation
exports.onUserCreate = functions.auth.user().onCreate(async (user) => {
    return admin
        .firestore()
        .collection('users')
        .doc(user.uid)
        .set({
            data: 'whatever you need',
        }, { merge: true });
});

【讨论】:

  • 感谢您的回答,但我认为这是针对 node/express 的,对吗?因为对于firebase firestore admin来说,flutter中没有任何类似的功能......
  • 是的,您必须将 Firebase Cloud Functions 用于此类触发器。它们在 Firebase 中运行,而不是在您的客户端上。
猜你喜欢
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2021-02-03
  • 2021-08-18
  • 2021-09-04
  • 2019-06-26
  • 2018-08-18
  • 2019-09-27
相关资源
最近更新 更多