Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Firebase中自动删除用户?_Javascript_Node.js_Firebase_Firebase Realtime Database - Fatal编程技术网

Javascript 如何在Firebase中自动删除用户?

Javascript 如何在Firebase中自动删除用户?,javascript,node.js,firebase,firebase-realtime-database,Javascript,Node.js,Firebase,Firebase Realtime Database,代码: app.js setInterval(function() { console.log("1"); var pendingRef = admin.database().ref("pending"); var now = Date.now(); var cutoff = now - 1 * 60 * 60 * 1000; var old = pendingRef.orderByChild('timestamp').endAt(cutoff).lim

代码:

app.js

setInterval(function() {

    console.log("1");
    var pendingRef = admin.database().ref("pending");
    var now = Date.now();
    var cutoff = now - 1 * 60 * 60 * 1000;
    var old = pendingRef.orderByChild('timestamp').endAt(cutoff).limitToLast(1);
    console.log("2");
    var listener = old.on('child_added', function(snapshot) {
        console.log("3");
        console.log("A VALUE:"+snapshot.val());
        snapshot.delete().then(function() {
            snapshot.ref().remove();
        }, function(error) {
            console.log("USER WAS NOT DELETED:"+ snapshot.val().key);
        });
    });
}, 1000 * 10);

情况:

我在我的
app.js

什么也没发生

在“1”和“2”之后,不会向控制台打印任何内容


编辑:

我无法在
快照上调用
.remove()

此外,从文档中:

要删除用户,该用户必须最近登录。请参阅重新验证用户身份

我怎样才能删除一个用户呢


参考资料:

快照上有。相反,您应该在快照的
ref
上调用
remove

var listener=old.on('child_added',函数(快照){
日志(“正在执行…”);
log(“A值:+snapshot.val());
snapshot.ref
.删除()
.catch(函数(错误){
console.log(“未删除用户:“+snapshot.key”);
});
});
要删除用户帐户,除了您存储的用户数据之外,还需要调用该方法(当您使用
firebase admin
在节点上运行此方法时):

var listener=old.on('child_added',函数(快照){
日志(“正在执行…”);
log(“A值:+snapshot.val());
snapshot.ref
.删除()
.然后(函数(){
返回admin.auth().deleteUser(snapshot.key);
})
.catch(函数(错误){
console.log(“未删除用户:“+snapshot.key”);
});
});

但我仍然需要删除身份验证系统中的用户。我不能在snaphot上调用该方法,那么我如何调用该方法呢?您可以在
用户
实例上调用它。如果快照是用户方法,那么在快照上调用它就没有意义。我知道,但我该怎么做?修复了答案中的一个错误:re:
snapshot.ref
-它是一个属性,而不是一个方法-但是在没有更多信息的情况下,无法回答有关删除用户帐户的问题。您是否在节点上运行此操作-使用
firebase admin
?快照数据中的哪个位置是帐户的
uid
?没有它,您无法删除帐户。我更新了我的问题。我使用的是firebase admin,uid是快照的关键。如果您设置了一个最小的jsbin来重现问题,我会看一看。@FrankvanPuffelen当需要管理员凭据时,我怎么做?编辑:另外,我试过使用另一个firebase func,比如once(“value”),但它成功了。我不知道出了什么问题。@FrankvanPuffelen把你问题中的代码放在jsbin中没有帮助。您将不得不花费精力来重现问题,这似乎是附加了一个动态查询。如果你不能在jsbin中复制它,恐怕我帮不了你。@FrankvanPuffelen我发现了这个问题。谢谢你为我指明了正确的方向:)