Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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实时数据库-foreach-应在箭头函数末尾接收值_Javascript_Firebase Realtime Database - Fatal编程技术网

Javascript Firebase实时数据库-foreach-应在箭头函数末尾接收值

Javascript Firebase实时数据库-foreach-应在箭头函数末尾接收值,javascript,firebase-realtime-database,Javascript,Firebase Realtime Database,当我调用foreach函数遍历每个子函数并更新匹配的记录时,我收到警告“期望在箭头函数末尾接收一个值” var email = req.body.email; var name = req.body.name; var result = false; userRef.once('value', snapshot => { result = snapshot.forEach(child => { if (child.val().email

当我调用foreach函数遍历每个子函数并更新匹配的记录时,我收到警告“期望在箭头函数末尾接收一个值”

var email = req.body.email;
var name = req.body.name;
var result = false;
    userRef.once('value', snapshot => {
        result = snapshot.forEach(child => {
            if (child.val().email === email){
                console.log(child.key);

                admin.database().ref('users/'+child.key).update({name: name}).then(result =>{
                    res.status(200).json({message: 'Updated'});
                    return true;
                })
                .catch(err => {
                    console.log(err);
                    return false;
                });
                return true;
            }
        });
        if (result === false){
            res.status(200).json({message: 'User does not exist'});
        }
    });
我从http post收到了参数email,现在我使用“foreach”搜索拥有此类电子邮件的用户。找到它后,我用另一个参数“name”更新它的名称,并返回true以退出foreach循环。但是,我收到一条关于我缺少一个返回的警告消息,在这种情况下,代码永远不会进入if语句。在正常情况下,我会计算数组的长度,一旦循环结束,我会返回false,但在这里我不能

我的数据库:

users
    -Lbq98URniAej2TkWBhG
           email: "pepe@san.com"
           name: "Pepe"
    -Lbq9GC1A131De-iumI0
           email: "pipa@boca.com"
           name: "Pipa10"

您没有从回调中的每个代码路径返回布尔值。例如,如果
child.val()?回调返回什么?在代码中,它不会返回任何内容,因为没有执行任何return语句。这就是导致错误消息的原因。那样的话,你需要归还一些东西。也许这样的方法会奏效:

    result = snapshot.forEach(child => {
        if (child.val().email === email){
            console.log(child.key);

            admin.database().ref('users/'+child.key).update({name: name}).then(result =>{
                res.status(200).json({message: 'Updated'});
                return true;
            })
            .catch(err => {
                console.log(err);
                return false;
            });
            // this line doesn't help anything, commented out
            //return true;
        }
        return true;  // this line always returns true from forEach
    });

道格,谢谢你。但是如果我没有更新任何内容,我怎么能返回false呢?我想让前台知道,我们找不到输入的电子邮件。
//这一行没有任何帮助,注释掉了
它有帮助-当条件满足时,它会提前终止。根据您的建议,每次迭代都将执行
返回true
,因此您不会执行多个循环,不是吗?如果
child.val(),则不会。正如我所说,email==email
产生false。也许你们两个都可以。嗨,弗拉兹,我说的是firebase实时数据库,请看这里的文档: