我正在尝试创建一个云函数,其中该函数删除“链接”集合中“ eindTijd”(结束时间)时间戳比现在更旧的每个项目。
该函数在每次数据库写入时执行,并且完全没有错误,但没有执行我打算做的事情。真让我发疯!
我怀疑错误在oldItemsQuery中,但是无法找出问题所在。任何帮助将不胜感激!
“ eindTijd”字段是使用Date函数生成的,在Firestore中被认为是有效的时间戳。
'use strict';
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
const firestore = admin.firestore();
const settings = {timestampsInSnapshots: true};
firestore.settings(settings);
exports.verwijderOudeNodes = functions.firestore
.document('/links/{pushId}')
.onWrite(() => {
const now = Date.now();
let oldItemsQuery = firestore.collection('links').where('eindTijd', '<=', now);
return oldItemsQuery.get().then((snapshot) => {
// create a map with all children that need to be removed
let batch = firestore.batch();
snapshot.forEach(child => {
batch.delete(child.ref);
});
// execute all updates in one go and return the result to end the function
return batch.commit();
});
});
答案 0 :(得分:1)
我不确定您通过now
的方式是否正确。基于Firebase documentation on writing its various data types,我希望:
const now = admin.firestore.Timestamp.fromDate(new Date())