我只想知道我们如何从服务器端更新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()
});
}
});