小编Urc*_*boy的帖子

如何将元数据添加到 Firebase 身份验证

我需要在使用 firebase 身份验证的 google 登录期间传递自定义值 (device_id)。此值稍后通过侦听身份验证事件触发器从云函数中获取,然后将该值添加到 Firestore

我知道您可以将值作为 http 触发器的查询参数传递。但是,在我的情况下,我只需要在身份验证期间和之后传递并获取值。因此,firebase 身份验证中是否存在某种 auth.addMetaData(metadata) 函数?

我需要能够在身份验证触发器之后检索自定义数据,就像我们可以执行 user.email 一样。我需要类似 user.custom_data 的东西

firebase firebase-authentication google-cloud-functions

7
推荐指数
2
解决办法
3737
查看次数

如何以编程方式在 firebase 中创建 cron 作业

我在这里有一个独特的问题。我实际上需要安排一项任务,以便在特定时间向符合条件的用户发送电子邮件。我检查并发现调度 cron 作业可以解决问题。但是,就我而言,我需要根据特定用户何时满足特定条件以编程方式安排这些任务。

这是我的场景

  1. 我正在我的应用程序中运行推荐活动,推荐最多 5 人的用户可以获得折扣订阅

  2. 用户推荐5人后,只要在24小时内付款,订阅费用将大幅下降。否则成本返回到原始值

  3. 我正在使用 firebase 云功能在特定时间向符合条件的用户发送提醒电子邮件提醒,以便在 24 小时前付款

现在的问题

  1. 我想在特定时间发送提醒电子邮件,比如他推荐 5 个人后,他的时间还剩 3 小时等。

  2. 如果我只安排一个函数而不考虑用户,我可能必须定期设置 cron 作业,比如 1 分钟,以始终检查我的数据库中的用户是否符合条件,然后向他们发送电子邮件。这带来了严重的问题,无论是否有合格的用户,云功能都会运行。

  3. 另一个问题是,通过上述实现,我无法在特定/确切时间向用户发送电子邮件,除非我每 1 秒安排一次任务,这当然会飞涨,因为云函数将被调用大约 86400 次(86400 秒) ) 一天

我提出的解决方案

  1. 我只需要一种动态安排 cron 任务的方法,以便我可以为特定用户安排作业。这将解决许多问题,例如在特定时间发送电子邮件、防止云功能在不必要时运行、能够为不同用户设置不同的电子邮件发送时间等

  2. 我计划使用带有用户 ID 请求参数的 http 触发器来调度任务,以便 firebase 可以使用此 ID 将任务仅分配给特定用户,即每个符合条件的用户都有自己的 http 触发器

请问有没有办法为我的案例实现这个或任何其他好的解决方案?

scheduled-tasks firebase google-cloud-platform google-cloud-functions google-cloud-firestore

5
推荐指数
1
解决办法
2626
查看次数

将 ViewModel 与 SQLite 数据库而不是 Room 数据库一起使用

我有一个主要的担忧。我刚刚阅读了关于 androidViewModel作为在 android 中幸存方向变化的更好替代方案以及减少样板代码的方法。我有一个使用SQLiteand完成的现有项目,LoaderManager并希望从使用 迁移LoadersViewModel. 然而,我在网上找到的所有教程和文档总是ViewModelRoomLibrary 一起使用。

我负担不起开始学习 Room 并且我的项目将很难重构以支持 Room。

因此我的问题是:

  1. 我可以使用原始SQLiteViewModel
  2. ViewModel设计为只与Room数据库一起工作?

sqlite android

3
推荐指数
1
解决办法
953
查看次数

Firebase 事务一次更新文档中的多个字段

我正在尝试读取 firestore 文档中的单个字段,将该字段增加 1,然后沿文档中的其他两个字段更新该字段。

看来 firebase transaction update() 函数接受只有一个字段和值的 JSON 对象,因为当我向 JSON 添加其他字段时,更新失败。

这有效:

t.update(referralCodesDocRef, {field1: value1});

这不起作用:

t.update(referralCodesDocRef, {
field1: value1,
field2: value2,
field3: value3
});
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

t.update(referralCodesDocRef, {field1: value1});
t.update(referralCodesDocRef, {field2: value2});
t.update(referralCodesDocRef, {field3: value3});
Run Code Online (Sandbox Code Playgroud)

这是执行交易的函数

function runIncreaseCountTransaction(referralCodesDocRef){
    return db.runTransaction(t => {
      return t.get(referralCodesDocRef)
      .then(doc => {
        console.log(doc);
        let newReferralCount = doc.data().referral_count + 1;
        if(newReferralCount === max_referral_count){
          const current_time_millis = Date.now();
          const end_time_millis = current_time_millis+(180*1000); // ends after 3 mins
          t.update(referralCodesDocRef, {referral_count: newReferralCount});
          t.update(referralCodesDocRef, { timer_start_time: current_time_millis }); …
Run Code Online (Sandbox Code Playgroud)

node.js firebase google-cloud-platform google-cloud-functions google-cloud-firestore

2
推荐指数
2
解决办法
8597
查看次数

自动为文档生成ID,而不是在Firestore中生成ID

我已经阅读了Firestore文档,但还没有找到一个示例,其中有类似的内容。

collection
       |--document
                |--{auto-generated-id}
                                  |--property1:value1
                                  |--property2:value2
                                  |--peoperty3:value3
Run Code Online (Sandbox Code Playgroud)

我经常看到的是:

collection     
         |--{auto-generated-id}
                            |--property1:value1
                            |--property2:value2
                            |--peoperty3:value3
Run Code Online (Sandbox Code Playgroud)

在前者中,我无法add()在文档上调用-(生成唯一ID)。但是,这可以在集合中完成,如上一个草图所示。

因此,我的问题是:在创建文档后,firestore有什么方法可以帮助自动生成id,即如何实现以下目标:

db.collection("collection_name").document("document_name").add(object)
Run Code Online (Sandbox Code Playgroud)

android firebase google-cloud-firestore

1
推荐指数
3
解决办法
4157
查看次数