【问题标题】:How to extract information from firestore & functions return from a firestore update trigger?如何从firestore中提取信息和从firestore更新触发器返回的函数?
【发布时间】:2020-05-15 16:59:45
【问题描述】:

我正在尝试通过函数从 Firestore 文件的更新中获取一些信息。

我已经设法让 firestore 触发器正确(更新我的 firestore 文件时功能正在工作),但我无法获取通过函数更新的信息。

这是我的函数代码:

import * as functions from "firebase-functions";
//const functions = require('firebase-functions');
const admin = require("firebase-admin");
admin.initializeApp();

exports.enviaMensagem = functions.firestore
  .document("Events/{eventID}/Listas/Convidados")
  .onWrite(async (change, context) => {
    const eventID = context.params.eventID;
    console.log("eventID: ", eventID);
    if (change.after.data()) {
        const data = change.after.data();

        if ( data!.reference) {
            console.log(data!.reference);
        } else {
            console.log('not possible to get the user reference');
        }

        console.log(data!.toString());
        console.log(change.after.toString());

    }
  });

[已解决]我的问题编号 1 是当我尝试 console.log(data!.toString()); 时,控制台的返回变为 [object Object] 而不是实际数据。

[已解决]我的问题编号 2 是我无法获取已插入到 firestore 文件中的信息。

这是插入到 firestore 文件中的信息的结构: updated data structure

结构是: {[reference key]:{apelido:'abc', estado:'def', referencia:[reference key]}}

我需要检索引用键,它是该地图的主要标签,也是结构内部的标签“referencia”

如何检索此引用密钥以便使用它?

感谢您的帮助!

更新 这是我记录的对象的打印:Logged object 我需要检索出现在日志“bJaETeYN4hYJqRN9PnmWfrhs7eC2”顶部和底部的这个长字符串 这个字符串对于每个用户都是不同的,我需要哪个用户正在执行操作的信息。

更新 2 我已经设法通过函数Object.keys(data!)[0] 得到我需要的东西 我将解决方案留在这里,以便其他人可以使用它!

【问题讨论】:

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


    【解决方案1】:

    如果你想用 JavaScript 记录一个对象,不要在它上面调用 toString()。直接传就行了:

    console.log(data!)
    

    你写的文件有点别扭。出于某种原因,它包含一个名称为“bJaE...7eC2”的字段。由于您没有显示写入此数据的代码,我们无法真正判断这是为什么,或者这只是一个错误。

    如果您需要完全按照所写的方式处理文档,您将不得不通过它所在的奇怪名称字段来引用 referencia 字段:

    console.log(data!.bJaE...7eC2.referencia)
    

    您必须将“bJaE...7eC2”替换为您在文档字段中看到的完整字符串。

    但是该字段名称可能是一个错误,您应该返回并修复您的客户端代码以执行您真正想要的操作。

    【讨论】:

    • 感谢您的帮助!我现在已经成功地让我的对象正确记录了。
    • 好的,如果您觉得这个答案有帮助,请点赞并将其标记为正确,这是 Stack Overflow 的惯例,可以帮助其他人知道信息是正确的。
    • 我已经用我记录的对象更新了帖子,这样你就可以更容易地理解我现在需要什么。对象结构正确。这个长字符串是我数据库上的用户参考,这正是我需要的信息。我怎样才能得到这些信息?
    • 您必须使用快照中提供的数据检查文档的内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-09
    • 2021-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-05
    相关资源
    最近更新 更多