Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.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_Firebase - Fatal编程技术网

Javascript Firebase推送不';不是增加而是替换

Javascript Firebase推送不';不是增加而是替换,javascript,firebase,Javascript,Firebase,当我使用.push()将opmerking添加到名为“leerling”的子节点时,新节点实际上是毫无问题地添加的,但无意中在过程中替换了现有的opmerking节点 我以前也遇到过类似的问题,请参阅后来解决的帖子,但该解决方案不适用于这里 是一个完整的源代码小提琴。请将firebase数据库名称更改为您自己的(或者是否有可用的测试/演示数据库?) $(document).ready(function(){ $("#submit").click(function(){

当我使用
.push()
opmerking
添加到名为“leerling”的子节点时,新节点实际上是毫无问题地添加的,但无意中在过程中替换了现有的
opmerking
节点

我以前也遇到过类似的问题,请参阅后来解决的帖子,但该解决方案不适用于这里

是一个完整的源代码小提琴。请将firebase数据库名称更改为您自己的(或者是否有可用的测试/演示数据库?)

$(document).ready(function(){  
    $("#submit").click(function(){
        var _leerling = $("#Leerling").val();
        var _opmerking = $("#Opmerking").val();
        var _bestanden = $("#Bestanden").val();
        var _door = $("#Door").val();
        var success = true;

        if(
            _leerling == "Maak een keuze..." || _leerling == "" || _leerling == "5H:" || _leerling == "6V:" || 
            _opmerking == "Typ hier jouw opmerking over de leerling die je geselecteerd hebt." || _opmerking == "" || 
            _door == "Maak een keuze..." || _door == "" 
            ) {
            alert("Alle velden met * zijn verplicht");      
        }
        else {
            event.preventDefault();
            var ref = new Firebase("https://torrid-inferno-6428.firebaseio.com/");
            var leerlingNummer = _leerling.substring(0,6).trim();
            var updatedObj = {}; // truc om key een waarde te geven, kan niet rechtstreeks met JavaScript
            updatedObj[leerlingNummer] = {              
                "naam": _leerling.substring(7,33).trim(),
                "klas": _leerling.substring(34,38),
                "klaskort": _leerling.substring(35,37),
                "leerlingdropdown": _leerling};
            ref.child("leerling").update(updatedObj,
                function(data) {
                    if (data) { alert(data); success = false; }
                });

            ref.child("leerling").child(leerlingNummer).child("opmerkingen").push({
                "opmerking": _opmerking,
                "bestanden": _bestanden,
                "door": _door},
                function(data) {
                    if (data) { alert(data); success = false; }
                    if (success) { 
                        alert("Bedankt! Jouw opmerking is opgeslagen.");
                        $('#form')[0].reset(); //To reset form fields
                    }

                });

        }
    });
});

问题不在于
Firebase.push()
,而在于:

var updatedObj = {}; // truc om key een waarde te geven, kan niet rechtstreeks met JavaScript
updatedObj[leerlingNummer] = {              
    "naam": _leerling.substring(7,33).trim(),
    "klas": _leerling.substring(34,38),
    "klaskort": _leerling.substring(35,37),
    "leerlingdropdown": _leerling};

ref.child("leerling").update(updatedObj, 
    function(data) {
        if (data) { alert(data); success = false; }
});
您正在更新
/leerling/
,这意味着不会更改
/leerling
的其他子项。但是,您正在替换
/leerling/
下的所有内容,这就是删除您的
opmerkingen
的原因

请尝试以下方法:

var updatedObj = {              
    "naam": _leerling.substring(7,33).trim(),
    "klas": _leerling.substring(34,38),
    "klaskort": _leerling.substring(35,37),
    "leerlingdropdown": _leerling};

ref.child("leerling").child(leerlingNummer).update(updatedObj, function(data) {
        if (data) { alert(data); success = false; }
});

这将更新
/leerling/
的指定子节点问题不在于
Firebase.push()
,而在于:

var updatedObj = {}; // truc om key een waarde te geven, kan niet rechtstreeks met JavaScript
updatedObj[leerlingNummer] = {              
    "naam": _leerling.substring(7,33).trim(),
    "klas": _leerling.substring(34,38),
    "klaskort": _leerling.substring(35,37),
    "leerlingdropdown": _leerling};

ref.child("leerling").update(updatedObj, 
    function(data) {
        if (data) { alert(data); success = false; }
});
您正在更新
/leerling/
,这意味着不会更改
/leerling
的其他子项。但是,您正在替换
/leerling/
下的所有内容,这就是删除您的
opmerkingen
的原因

请尝试以下方法:

var updatedObj = {              
    "naam": _leerling.substring(7,33).trim(),
    "klas": _leerling.substring(34,38),
    "klaskort": _leerling.substring(35,37),
    "leerlingdropdown": _leerling};

ref.child("leerling").child(leerlingNummer).update(updatedObj, function(data) {
        if (data) { alert(data); success = false; }
});

这将更新
/leerling/

Good catch Seamus的指定子节点!你赢了我6分钟。:-)@谢谢你。有时我很幸运抓到希默斯了!你赢了我6分钟。:-)@谢谢你。有时我很幸运