Node.js 在cloud firestore中将文档从一个集合复制到另一个集合

Node.js 在cloud firestore中将文档从一个集合复制到另一个集合,node.js,google-cloud-firestore,google-cloud-functions,Node.js,Google Cloud Firestore,Google Cloud Functions,由于CloudFireStore中没有“移动”或“重命名”命令,所以我尝试每天早上6点(英国时间)将所有文档从一个集合复制到另一个集合。到目前为止,我已经想出了这段代码,但不确定如何获取剩余值,然后在原始文档保存到另一个集合中后将其删除: exports.scheduledFunctionCrontab = functions.pubsub.schedule('0 6 * * *') .timeZone('Europe/London') // Is this correct? .

由于CloudFireStore中没有“移动”或“重命名”命令,所以我尝试每天早上6点(英国时间)将所有文档从一个集合复制到另一个集合。到目前为止,我已经想出了这段代码,但不确定如何获取剩余值,然后在原始文档保存到另一个集合中后将其删除:

exports.scheduledFunctionCrontab = functions.pubsub.schedule('0 6 * * *')
    .timeZone('Europe/London') // Is this correct?
    .onRun((context) => {
    var dateObj = new Date();
    var month = dateObj.getUTCMonth() + 1; //months from 1-12
    var day = dateObj.getUTCDate();
    var year = dateObj.getUTCFullYear();
    console.log(`This function ran at ${Date.now}!`);
    db.collection("Restaurants/${**resID**}/openorders").get().then(query => {
       query.forEach(function(doc) {
          var promise = firestore.collection("Restaurants/${**resID**}/closed/${year}/${month}/${day}/closed).doc(doc.data().orderID).set(doc.data());
// How I delete this document here?
       });
    })
    .catch((error)=>{
        console.log('Failure:', e);
        console.log(`This function ran with ERROR at ${Date.now}!`);
      });
    return null;
  });
  

要迭代名为
openorders
的所有集合,可以使用

然后,要获取每个
openorders
文档的父文档,可以使用
ref
parent
属性

比如:

db.collectionGrouo("openorders").get().then(query => {
   query.forEach(function(doc) {
      let resID = doc.ref.parent.parent.id;
      ...
   });
})

对于这种类型的东西,我总是建议将参考文档放在手边,首先。

您正在寻找
doc.ref.delete()
?您想将所有日常文档转移到另一个集合吗?@frankvanpoffelen可能他正在寻找如何获得
剩余
谢谢。是的,我正在研究如何在多个redid之间迭代。我试着大胆一点,所以他们周围都是苦涩。这太棒了。删除了我的解决方案,因为这是一种更好的处理问题的方法。我不知道您可以调用DocumentReference和CollectionReference的父属性。对我来说,这确实改变了游戏规则。很高兴听到@KasualDev,非常感谢你,弗兰克!对于在这个问题及其答案上得到帮助的其他人,请将他们两人都投上一票。