Firebase函数被调用,但是.doc()之后的func方法.set()无法正常工作

时间:2019-01-16 11:54:06

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

我正在尝试通过客户端(Android)调用Firebase Function在Firebase Firestore中创建文档。

正如文档所述,我们可以在将来的文档上创建参考,并在以后的几行中设置信息: firebase github

我在客户端上获得了文档ID,但是该文档未添加到Firestore中,因此“ set()”不起作用。

怎么了?

awk -F"[=;]" '!/^$/{x+=$3;y+=$3*$5}END{print y/x}' file

});

我希望将数据添加到Firestore。

1 个答案:

答案 0 :(得分:1)

以下方法应该起作用:

'use strict';

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();


export const createPack = functions.https.onCall((data) => {

    console.log("[CREATE PACK] START");

    const db = admin.firestore();

    var documentRef = db.collection("packs").doc();

    console.log("[CREATE PACK] GOT REF");

    return documentRef.set({
        title: data.title,
        date: data.date,
        total: data.total,
        activated: 0
    })
    .then(() => {
        const packId = documentRef .id;

        console.log('[CREATE PACK] PACK ID ' + packId);
        console.log('[CREATE PACK] END');
        return { "id": packId };
    });

});

您必须在异步操作后返回一个Promise,请参阅文档:https://firebase.google.com/docs/functions/callable。 (我还建议您观看Firebase视频系列中名为“学习JavaScript承诺”的3个视频:https://firebase.google.com/docs/functions/video-series/

此外,请注意,由于Cloud Functions版本1.0“初始化时,您不能再传递functions.config().firebase”。参见https://firebase.google.com/docs/functions/beta-v1-diff#new_initialization_syntax_for_firebase-admin。最后请注意,您必须在Cloud Function本身之外进行初始化。