Firebase google cloud函数返回快照



是否有可能从Firebase谷歌云功能返回这样的快照?

exports.getFreshData = functions.https.onCall(async (data, context) => {
const ref = data.ref;
try {
const snap = await admin.database().ref(ref).once("value");
return {res: true, snapshot: snap};
} catch (e) {
error(e);
return false;
}
});

当我从客户端调用这个函数时,我得到以下错误:

Unhandled error RangeError: Maximum call stack size exceeded
at keys (/workspace/node_modules/lodash/lodash.js:13333:60)
at /workspace/node_modules/lodash/lodash.js:4920:21
at baseForOwn (/workspace/node_modules/lodash/lodash.js:2990:24)
at Function.mapValues (/workspace/node_modules/lodash/lodash.js:13426:7)
at encode (/workspace/node_modules/firebase-functions/lib/providers/https.js:184:18)
at /workspace/node_modules/lodash/lodash.js:13427:38
at /workspace/node_modules/lodash/lodash.js:4925:15
at baseForOwn (/workspace/node_modules/lodash/lodash.js:2990:24)
at Function.mapValues (/workspace/node_modules/lodash/lodash.js:13426:7)
at encode (/workspace/node_modules/firebase-functions/lib/providers/https.js:184:18) 

然而,如果我返回snap.val(),它运行得很好。我希望能够返回快照虽然。这可能吗?

可调用的云函数只能返回JSON类型,正如文档中提到的返回值:

将数据发送回客户端,返回可以JSON编码的数据。

DatabaseSnapshot不是JSON类型,而是一个更复杂的JavaScript对象。您通常希望返回快照的值,或者返回它的键和值:

return { res: true, key: snap.key, value: snap.val() };

最新更新