我正在android studio中构建一个待办事项列表应用程序,将任务保存在Firestore中,我给每个任务列出了最后期限,并且我想每天早上检查是否达到了截止日期,所以我尝试使用云解决问题我找不到如何在特定路径下获取所有文档并进行一些检查并重写更改
我下载了node.js并初始化了Firebase,我也尝试在控制台中执行此操作,但是它没有此选项
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
// Create and Deploy Your First Cloud Functions
// https://firebase.google.com/docs/functions/write-firebase-functions
exports.scheduledFunctionCrontab = functions.pubsub.schedule('0 0 6 * *')
// .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
.onRun((context) => {
const overdueSnap = admin.firestore().collection('tasks')
.where('overdue','==',false)
.where('due_time', '=<', new Date()).getTime();
await Promise.all(overdueSnap.docs.map((doc) => doc.ref.update({color: true}));
console.log('This will be run every day at 6 AM Eastern!');
return null;
});
答案 0 :(得分:0)
您的问题有点含糊,但是听起来您想做的就是查询所有过期的文档并进行更新。我假设您在due_time
字段中将到期日期存储为Timestamps,并且您想在任务过期时将overdue
字段标记为true
。您可以执行以下操作:
exports.scheduledFunctionCrontab = functions.pubsub
.schedule('0 0 6 * *')
.onRun(async (context) => {
const overdueSnap = await admin.firestore().collection('tasks')
.where('overdue','==',false)
.where('due_time' '<=', new Date()).get();
await Promise.all(overdueSnap.docs.map((doc) => doc.ref.update({overdue: true}));
});
此代码执行以下操作:
due_time
标记为overdue
的{{1}}的文档。true
设置为overdue
。您的详细信息可能有所不同,但这是您要描述的问题类型的常规方法。