【发布时间】:2017-08-22 05:24:06
【问题描述】:
我正在尝试 Cloud Functions for Firebase,创建一个函数,当新用户添加到数据库时(不在身份验证上),该函数将添加一个昵称。 从Firebase Documention我发现我需要使用:
ref.on("child_added", function(snapshot, prevChildKey) {
//Something
})
,但我什至无法部署该功能。我的代码是:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var ref = admin.database().ref("/users");
ref.on("child_added", function(snapshot, prevChildKey) {
console.log(snapshot)
})
有人可以帮我吗?
更新:
在处理之后,这是我的代码:
const functions = require('firebase-functions');
// Import Admin SDK
var admin = require("firebase-admin");
admin.initializeApp(functions.config().firebase);
var db = admin.database();
var ref = db.ref('users');
var childs = [];
var nicknames = [];
exports.newUser = functions.database.ref('users').onWrite(event => {
const data = event.data.val();
ref.on("child_added", function(snapshot, childKey) {
if (!childs.includes(childKey)) {
childs.push(childKey);
};
for (i in childs) {
if (childs[i] == null) {
childs.splice(i, 1);
};
};
});
ref.once("value", function(snapshot) {
for (i in childs) {
var child = data[childs[i]];
if (!child.hasOwnProperty("nickname")) {
console.log("Child does not have nickname: " + childs[i]);
ref.child(childs[i]).update({
nickname: "user"+childs[i]
});
};
};
});
});
根据 Doug Stevenson 的回复,我仍然需要弄清楚只有在添加了一个新孩子(新用户)的情况下才能做到这一点
【问题讨论】:
-
嗨,关于这个问题的任何解决方案?谢谢
-
很遗憾没有。我找到的唯一解决方案是我在下面发布的解决方案,但它仍然会在每次向用户写入内容时触发,仅当直接在“用户”下方添加一个孩子时
标签: node.js firebase firebase-realtime-database google-cloud-functions