Как выполнить операцию удаления определенного дочернего элемента в Firebase, используя Javascript - PullRequest
0 голосов
/ 03 февраля 2019

Я пытаюсь закодировать функцию удаления для моей таблицы, которая использует Firebase Realtime db.Я вроде как новичок в этом, но мне нужна помощь.

Я пытаюсь получить идентификатор ребенка и передать его в функцию, чтобы удалить его, Пока ..

    var mainApp = {};
    (function(){

    var firebase = app_firebase;
    var uid = null;


    function fnHRead() {
    var path = 'institutions/' + uid;
    app_firebase.databaseApi.read(path, sucessFn, messageHandler)
    function sucessFn(snapShot){
        if(!!snapShot && !!snapShot.val()){
        //console.log(snapShot.val());
        var inst_info = snapShot.val();
        var keys = Object.keys(inst_info);
        console.log(keys);
        var html = "<table class='centered' border='1|1'>";
        html+= "<thead>";
        html+= "<tr>";
        html+= "<th>Institution Name</th>";
        html+= "<th>Proprietor</th>";
        html+= "<th>Phone</th>";
        html+= "<th>Email</th>";
        html+= "<th>Locality</th>";
        html+= "<th>City</th>";
        html+= "<th>Manage</th>";
        html+= "</tr>";
        html+= "</thead>";

        for (var i = 0;i < keys.length; i++){
            var k = keys[i];
            var name = inst_info[k].inst_name;
            var ownerName = inst_info[k].inst_owner;
            var email = inst_info[k].inst_email;
            var phone = inst_info[k].inst_phone;
            var locality = inst_info[k].inst_locality;
            var city = inst_info[k].inst_city;
            var path = keys[i];

            html+="<tr>";
            html+="<td>"+name+"</td>";
            html+="<td>"+ownerName+"</td>";
            html+="<td>"+phone+"</td>";
            html+="<td>"+email+"</td>";
            html+="<td>"+locality+"</td>";
            html+="<td>"+city+"</td>";
            html+="<td><a class='waves-effect waves-light btn red' onclick='mainApp.deletePatient("+path+")'>Delete</a></td>";
            html+="</tr>";
            //console.log(name,ownerName,email,phone,locality,city);
            console.log(path);

        }
        html+="</table>";
            document.getElementById("manageExist").innerHTML = html;
            M.toast({html: 'Institution list Fetch Sucessfull', classes: 'rounded'});

        }else{
        console.log("No data");
        M.toast({html: 'Institution list Fetch Unsucessful', classes: 'rounded'});
        }
    }   
    }

    function fnHDelete(path){
        app_firebase.databaseApi.delete(path, messageHandler);

    }
    mainApp.deletePatient = fnHDelete;
    })()

Другой .js, который содержит учетные данные и функции firebase для работы CRUD

    function dbDelete(path, callBack){
        if(!path) return;
        app_firebase.database().ref(path).remove(callBack);

    }

Ошибка, которую я получаю в консоли:

    dashboard.html:1 Uncaught ReferenceError: LXntMDT74LL_suY6Ar0 is not defined
    at HTMLAnchorElement.onclick (dashboard.html:1)

1 Ответ

0 голосов
/ 03 февраля 2019

Прежде всего, javascript - это язык, специально разработанный для клиентской стороны, и пользовательское приложение ни при каких обстоятельствах не должно напрямую взаимодействовать с базой данных из-за нескольких проблем безопасности.

Чтобы ответить на ваш вопрос: Firebaseимеет команду removeValue(), которую можно использовать для удаления элемента: Ссылка на документ

Редактировать: Вы вызываете функцию обратного вызова, которую необходимо удалить, а не путь.Не совсем уверен, если это ошибка, но стоит попробовать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...