首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在Firebase中创建计算字段?

如何在Firebase中创建计算字段?
EN

Stack Overflow用户
提问于 2021-11-12 21:30:03
回答 2查看 118关注 0票数 0

我正在创建一个Firebase应用程序,并希望在其中存储用户的订阅详细信息。我计划存储订阅的start_date、end_date和number_of_days_left。我想根据end_date和current_date之间的差异来计算number_of_days_left。number_of_days_left应该每天在Firebase中更新。做这件事最好的方法是什么?

EN

回答 2

Stack Overflow用户

发布于 2021-11-13 05:37:12

要实现所需的任务,您可以使用Scheduled Firebase Cloud Functions。此函数创建发布/订阅主题,并使用云调度器触发该主题上的事件,从而确保函数按所需的计划运行。

要存储订阅的start_dateend_datenumber_of_days_left,您可以使用Cloud Firestore

首先,您可以在Firestore中创建一个users集合。并在用户订阅应用程序时添加唯一文档。在文档中,您可以将start_dateend_date存储为timestamp类型的字段,将number_of_days_left存储为number类型。

Firestore数据库结构将如下所示-

代码语言:javascript
运行
AI代码解释
复制
users------>
    user1------>
        start_date
        end_date
        number_of_days_left
    user2----->
        start_date
        end_date
        number_of_days_left
    user3----->
        start_date
        end_date
        number_of_days_left

现在,您可以实现计划的Firebase功能,并每天更新number_of_days_left字段。计划的Firebase功能使用Unix Crontab。你可以找到更多关于Unix Crontab语法here的信息。NodeJS中的以下计划Firebase函数每天在00:00上运行,并为users集合中的每个用户更新number_of_days_left字段。

代码语言:javascript
运行
AI代码解释
复制
const admin = require("firebase-admin");
const functions = require("firebase-functions");
admin.initializeApp();
const db=admin.firestore();
exports.scheduledFunctionCrontab = functions.pubsub.schedule("0 0 * * *")
   .timeZone("Asia/Kolkata")
   // Users can choose timezone - default is America/Los_Angeles
   .onRun(async (context) => {
     const docRef = await db.collection("users").get();
     docRef.forEach((doc)=>{
       const data=doc.data();
       const difference=Math.
           floor((data.end_date-admin.firestore.Timestamp.now())/(24*60*60));
       doc.ref.update({"number_of_days_left": difference});
     });
   });

在函数代码中,您可以指定列出here的任何有效timezone

票数 1
EN

Stack Overflow用户

发布于 2021-11-13 04:41:47

要实现这一点,我建议您使用Cloud Scheduler

云调度器是一个完全托管的企业级cron作业调度器。

因此,您可以创建一个cron来每天更新该差异。这样,您将始终拥有一个包含确切剩余天数的字段。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69951710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档