Javascript 通过Firebase函数删除基于时间戳的旧文档

Javascript 通过Firebase函数删除基于时间戳的旧文档,javascript,node.js,firebase,google-cloud-firestore,Javascript,Node.js,Firebase,Google Cloud Firestore,我试图根据文档的时间戳删除集合中的特定文档。我设置为过期的帖子应该在脚本调用时从云中删除 问题是我无法找到一种方法来迭代集合中的所有文档,以便访问字段并比较Date.now()到post['expireDate] 我不是在使用实时数据库,而是在我的项目中使用firestore云。我在db中找到了一种方法,但在云端没有,我尝试了不同的方法 exports.removeOldPosts = functions.https.onRequest((req, res) => { const

我试图根据文档的时间戳删除集合中的特定文档。我设置为过期的帖子应该在脚本调用时从云中删除

问题是我无法找到一种方法来迭代集合中的所有文档,以便访问字段并比较
Date.now()
post['expireDate]

我不是在使用实时数据库,而是在我的项目中使用firestore云。我在db中找到了一种方法,但在云端没有,我尝试了不同的方法

exports.removeOldPosts = functions.https.onRequest((req, res) => {
    const timeNow = Date.now();
    let postsRef = admin.firestore().collection('accesories/').listDocuments();

    postsRef.forEach(post => {
        if (post['expiredDate'] < timeNow) {
            post.delete();
        }
    })

    return res.status(200).end();
});
exports.removeOldPosts=functions.https.onRequest((req,res)=>{
const timeNow=Date.now();
让postsRef=admin.firestore().collection('accesories/').listDocuments();
postsRef.forEach(post=>{
if(post['expiredate']
您正在使用,它(异步)返回文档引用列表。但您的代码:

  • 不处理调用是异步的这一事实。例如,您没有
    then()
    回调,如文档示例所示
  • 假设检索到文档的数据,而
    listDocuments
    实际上只返回文档引用
要解决此问题,我建议使用Firebase文档中显示的
get()
API。尽管如此,您仍然需要自己处理异步特性,即使使用该API,因此我建议您深入研究云函数和现代web API的异步特性。道格优秀的博客文章和视频系列是一个开始的地方



另请注意:与其从数据库中读取所有文档,然后在代码中确定要删除哪些文档,我建议只检索要删除的文档。这会导致阅读更少的文档,这在
文档阅读
带宽

两方面都为您节省了一些成本。谢谢您,我会尝试一下,因为Pit现在可以像魔术一样工作,谢谢您的详细回答,这是我第一次使用JS,我不知道您可以在云上进行异步编程,这是我的第一个错误:)