【问题标题】:Cloud firestore function that duplicate data复制数据的 Cloud Firestore 功能
【发布时间】:2020-04-29 14:40:36
【问题描述】:

我知道通常我们必须提供一些东西,但实际上我对 firebase 中的功能感到迷茫,我尝试每个月执行一个功能,它从 firebase 文档中的字段获取数据,然后创建一个具有用户 ID 和另一个表中的数据的新文档。这可能吗,有人知道如何实现和理解吗?

 export const helloWorld = functions.https.onRequest((request, response) => {
  try {
    db.collection('users').get()
    .then(function(querySnapshot: any[]) {
        querySnapshot.forEach(function(doc) {
            const user = doc.id;
            const conso = doc.data().conso_co2;
            db.doc("historic"+user).add({
                    consommation: conso,
                    date: new Date()
                })

        });
    })
    .catch(function(error: any) {
        console.log("Error getting documents: ", error);
    });
  }catch(error) {
      console.log("Error getting document:", error);
  }
  response.send("Hello from Firebase!");
});

我放了一个Http触发器来简化调试

【问题讨论】:

    标签: google-cloud-firestore google-cloud-functions


    【解决方案1】:

    我相信对此的修改应该可以完成您想要完成的工作 - 如果不让我在 cmets 中知道,我可以与您合作。

    这个方法的修改版本应该允许你

    1. 每月第一天午夜运行
    2. 从给定文档中获取数据
    3. 使用该数据在其他地方创建另一个文档
    exports.scheduledFunctionCrontab = functions.pubsub
        .schedule("0 0 1 * *")
        .timeZone("Europe/Paris")
        .onRun(context => {
            try {
                const sfDoc = db.collection("cities").doc("SF");
                const doc = await sfDoc.get();
                if (doc.exists) {
                    const data = doc.data()
                    const laDoc = db.collection("cities").doc("LA");
                    await laDoc.set({
                        name: "Los Angeles",
                        state: "CA",
                        country: "USA",
                        newData: data
                    })
                }
            }  
            catch(error) {
                console.log("Error getting document:", error);
    
            }
        })
    

    【讨论】:

    • 谢谢它帮助了我,事实是现在我需要从我的所有用户中检索特定字段,事实是我们实现了获取所有用户数据但我不知道如何获取特定字段
    • 我不确定我是否在关注 - 如果您拥有整个用户对象,您应该可以访问其所有属性。
    • 你可能是真的,但实际上我不知道如何得到它:( ,我得到类似 { obj_euro: '20000', eco_co2: '15359.4', kmetre: '256.0', conso_co2: '4526.2', obj_co2: '5557' } 但我只想要一个字段
    • 假设您有您的对象,我将其命名为data。数据看起来像{ obj_euro: '20000', eco_co2: '15359.4', kilometre: '256.0', conso_co2: '4526.2', obj_co2: '5557' },我可以像这样访问这些属性中的任何一个:data.kilometre 用于普通访问 const kilometre = data.kilometre 将您想要的内容存储在变量中,(甚至使用 ES6 解构更清晰)const { kilometre } = data
    • 我尝试过:doc.data().conso_co2 但什么也没有:(
    猜你喜欢
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    • 2021-09-07
    • 2018-12-27
    • 2019-12-22
    • 1970-01-01
    • 2019-11-12
    • 2020-10-15
    相关资源
    最近更新 更多