我只想知道我们如何从服务器端更新Firestore中所有用户的所有剩余天数,是否需要使用Firebase CLI和node.js.

最佳答案

要(每天)运行定期更新,我建议使用Firebase函数,该函数可查询集合并根据您的需要更新数据。您可以创建可以通过URL触发的http函数(可以安排CRON作业来触发它),也可以创建具有自己的计划机制的pubsub函数(需要付费的Firebase计划)。

PubSub示例:

export scheduledFunctionCrontab =
    functions.pubsub.schedule('5 11 * * *').onRun((context) => {
        console.log('This will be run every day at 11:05 AM UTC!');
        //query and update database collection

});


Http示例:

exports.functionName = functions.https.onRequest((req, res) => {
    //query and update database collection
});


用于在Node.js中更新Firestore的Javascript如下所示:

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var db = admin.firestore();

async function getDocuments() {
    let docRef = db.collection('<collectionName>');
    const result = await docRef.where(admin.firestore.FieldPath.documentId(), '>=', 'condition')
    .get();
    return result.docs;
}

exports.updateData = functions.pubsub.schedule('every 1 days').onRun(async context => {
    const documents = await getDocuments();
    for(i = 0; i < documents.length; i++) {
        documents[i].update({
            timestamp: firebase.firestore.FieldValue.serverTimestamp()
        });
    }
});

09-30 17:13
查看更多