Firebase函数 - 如何在将数据保存到数据库后将对象作为JSON返回?

时间:2018-03-26 05:18:11

标签: typescript firebase firebase-realtime-database google-cloud-functions

我正在使用firebase函数将数据写入数据库。 我正在使用的函数由HTTP调用(仅POST)触发。 我能够将数据保存到数据库,但无法以适当的格式返回数据。 我收到了,以下错误

  

TypeError:snapshot.val不是函数

export const saveOrder = functions.https.onRequest(((request, response) => {

    if (request.method == "POST") {

        const data = JSON.stringify(request.body);
        let jsonData = data.replace(/\r?\n\t?/g, '');

        let object = {order: JSON.parse(jsonData), status: "pending"};

        return admin.database()
            .ref("orders")
            .push(object)
            .then(function (snapshot) {
                return response.send(200, snapshot.val());
            });
    } else {
        response.contentType("application/json");
        response.status(400).send('{"message":"Invalid method"}');
        return;
    }
}));

1 个答案:

答案 0 :(得分:1)

.push()方法不返回Snapshot数据,而是返回Reference

您可以获取新参考文献的密钥:

    .then((reference) => { return response.send(200, reference.key) });

要以正确的格式返回数据,您可以返回传递给Firebase的对象:

return admin.database() ref("orders").push(object)
        .then(function(reference) {
            return response.send(200, {
                  key: reference.key,
                  data: object,
            });
        });