Как сделать обновление в листинге для веб с помощью Firebase - PullRequest
0 голосов
/ 20 марта 2019

Я создаю админ-панель на веб-сайте и использую Firebase в качестве базы данных в бэкенде. Я могу отобразить список, но когда я нажимаю на конкретный список, его статус должен измениться с «ожидающий» на «принять», но это не так..Я не знаю, где я допустил ошибку. Пожалуйста, дайте предложение, и я прилагаю файл js и скриншот базы данных

pl.js

 var firebaseheadingRef = firebase.database().ref().child("user");


    firebaseheadingRef.on('child_added',datasnapshot=>{

       var title= datasnapshot.child("listing").child("title").val();
       var userid= datasnapshot.child("username").val();
       var type= datasnapshot.child("listing").child("title").val();
       var publisheddate= datasnapshot.child("listing").child("publish").val();
       var expirydate= datasnapshot.child("listing").child("expire").val();

       $("#tablebody").append("<tr><td>"+title+"</td><td>"+userid+"</td><td>"+type+"</td><td>"+publisheddate+"</td><td><button type=button id=accept onclick=accept()>Accept</button><button type=button>Reject</button></td></tr>");
      });


    function accept()
    {
      firebaseheadingRef.on('child_changed',datasnapshot=>{
        datasnapshot.child("listing").child("status").update({"status":"accept"});
        setCommentValues(postElement, data.key, data.val().text, data.val().author);

      });
    }  

база данных

enter image description here

выводит на экран изображение дисплея, где я нажимаю кнопку подтверждения, затем обновление статуса должно быть сделано

enter image description here

1 Ответ

1 голос
/ 20 марта 2019

Есть два места, где вам нужно изменить код:

Во-первых, в коде, который генерирует таблицу, вы должны передать идентификатор узла в вызов функции следующим образом. Вы получаете идентификатор узла со свойством key DataSnapshot.

.....
$("#tablebody").append("<tr><td>"+title+"</td><td>"+userid+"</td><td>"+type+"</td><td>"+publisheddate+"</td><td><button type=button id=accept onclick=accept('" + datasnapshot.key + "')>Accept</button><button type=button>Reject</button></td></tr>");
...

А во-вторых, вы должны написать свою функцию accept() таким образом, чтобы она обновляла значение базы данных с помощью метода set(). Как следующий

function accept(userId) {
  var nodeRef = firebase.database().ref("/user/" + userId + "/listing/status");
  return nodeRef.set('accept');
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...