我写这个简单的firebase云功能只是为了熟悉产品!
所有这一切都是复制添加到“userWriteable / userProfiles /”
的数据在文档中,您总是使用onCreate回调中返回的快照看到它们,以获取要写入的新数据库引用。
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();
exports.copyProfileFunctionA = functions.database.ref('userWriteable/userProfiles/{userId}')
.onCreate((snapshot, context) => {
// Grab the current value of what was written to the Realtime Database.
const original = snapshot.val();
return snapshot.ref.root.child(`userWriteable/userProfileCopies/${context.params.userId}`).set(original);
});
exports.copyProfileFunctionB = functions.database.ref('userWriteable/userProfiles/{userId}')
.onCreate((snapshot, context) => {
// Grab the current value of what was written to the Realtime Database.
const original = snapshot.val();
return admin.database().ref(`userWriteable/userProfileCopies/${context.params.userId}`).set(original);
});
是否有这样的理由,或者我可以像函数copyProfileFunctionB
中的那样做吗?
使用functionA而不是functionB是否有任何性能/成本优势?
两个函数都写入“userWriteable / userProfileCopies /".
通过admin.database()
获取参考的费用更高吗?
答案 0 :(得分:1)
最好使用快照中的ref,因为它由已经初始化并且可能已经连接的admin SDK实例提供支持。直接初始化和使用Admin SDK是可以的,但它可能导致您的函数等待另一个连接(如果尚未连接),现在运行代码的每个服务器实例可能都与您的数据库保持两个连接。