Javascript Firestore&x2B;云功能:如何读取其他文档

Javascript Firestore&x2B;云功能:如何读取其他文档,javascript,google-cloud-functions,google-cloud-firestore,Javascript,Google Cloud Functions,Google Cloud Firestore,我正在尝试编写一个从另一个文档读取的Google云函数。(其他文档=不是触发云功能的文档。) 弄明白如何做这么简单的事情有点像寻宝 云功能文档似乎建议查看管理SDK:“您可以通过DeltaDocumentSnapshot界面或管理SDK进行云Firestore更改。” AdminSDK建议编写以下代码行以获取客户端。但哦,不,这不能解释客户。这会让我们在文件的其他地方陷入一场白费力气的追逐 var defaultFirestore=admin.firestore() “如果未提供应用程序,则为

我正在尝试编写一个从另一个文档读取的Google云函数。(其他文档=不是触发云功能的文档。)

弄明白如何做这么简单的事情有点像寻宝

  • 云功能文档似乎建议查看管理SDK:“您可以通过DeltaDocumentSnapshot界面或管理SDK进行云Firestore更改。”

  • AdminSDK建议编写以下代码行以获取客户端。但哦,不,这不能解释客户。这会让我们在文件的其他地方陷入一场白费力气的追逐

    var defaultFirestore=admin.firestore()

    “如果未提供应用程序,则为默认Firestore客户端,或者为与提供的应用程序关联的Firestore客户端。”

  • 该链接解析为一个概述页面,没有关于下一步工作的直接线索

  • 有一个很有前途的类叫做FireStoreClient。它有一个“getDocument”方法,看起来很有前途。参数似乎很复杂。与其简单地将路径传递到方法中,还不如将整个文档/集合作为参数

    var formattedName=client.anypath(“[PROJECT]”、“[DATABASE]”、“[DOCUMENT]”、“[ANY_PATH]”);
    getDocument({name:formattedName})。然后(函数(响应){
    var响应=响应[0];
    //doThingsWith(回应)
    })

  • 因此,我试图将所有这些信息合并到一个谷歌云函数中,该函数将从另一个文档中读取

    const functions = require('firebase-functions');
    
    const admin = require('firebase-admin');
    admin.initializeApp(functions.config().firebase);
    
    exports.updateLikeCount4 = functions.firestore
        .document('likes/{likeId}').onWrite((event) => {
            return admin.firestore()
                .getDocument('ruleSets/1234')
                .then(function(responses) {
                     var response = responses[0];
                     console.log('Here is the other document: ' + response);
                 })
        });
    
    这种方法在以下方面失败:

    admin.firestore.getDocument is not a function
    
    我也试过了。admin.firestore.document、admin.firestore.doc、admin.firestore.collection等等。它们似乎都不是函数

    我只想在谷歌云功能中读取另一个Firestore文档


    附言:他们说文件是你的朋友。这篇文档是一场噩梦,它遵循将所有线索分散到风的四个方向的原则

    谢谢你,@frank van puffelen

    这是可行的解决方案:

    exports.updateLikeCount = functions.firestore
        .document('likes/{likeId}').onWrite((event) => {
            return admin.firestore()
                .collection('ruleSets')
                .doc(1234)
                .get()
                .then(doc => {
                    console.log('Got rule: ' + doc.data().name);
                });
        });
    

    这是另一个错误的开始。Firebase有一个GitHub repo,其中有一些例子:下面是这个例子的相关部分:
    admin.firestore().collection('messages')。添加({original:original})。然后(writeResult=>
    我已经为我的代码修改了它。它也失败了,出现了一个错误。据我所知,您的第一个代码片段应该是
    admin.firestore().doc('ruleSets/1234')。get()。然后(…
    admin.firestore().collection('ruleSets')。doc('1234')。get()。然后(…
    非常感谢!是的,它现在终于开始工作了!