Передать данные на два разных узла с одинаковым идентификатором - PullRequest
1 голос
/ 24 апреля 2019

В настоящее время я пытаюсь отправить некоторые данные в Firebase с помощью jquery. Я отлично работаю, но мне не удается отправить данные на два разных дочерних узла (ref и ref2) с одним и тем же идентификатором.

Другими словами, когда я использую свой код, данные, помещенные в ref, не имеют того же идентификатора, что и данные, помещенные в ref2.

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

function retrievedata(){

var iduser = window.user;
var uiduser = iduser.uid;

var database = firebase.database();
var ref = database.ref('productspushed'+'/'+uiduser);
var ref2 = database.ref('products');

  $.get(window.location.href, function(data){ 

  $("tr.woocommerce-cart-form__cart-item.cart_item").each(function(i, obj) {
      const name = $('td.product-name', obj).text();
      const nameok = name.trim();
      console.log(nameok);

      const url = $('a', obj).eq(1).attr('href');
      console.log(url);

      const imgurl = $('img.attachment-woocommerce_thumbnail.size-woocommerce_thumbnail', obj).attr('srcset').split(',').pop().trim().split(' ')[0];
      console.log(imgurl);

      const price = $('span.woocommerce-Price-amount.amount', obj).eq(0).text().replace(/€/, '');
      console.log(price);

      const data = {title: nameok, 
      imgurl: imgurl,
      price: price,
      url: url,
      };

        ref2.push(data);
        ref.push(data);

      })
  })


};

Я хотел бы отправить данные в ref и ref2 с тем же идентификатором. Если бы вы, ребята, могли бы дать мне подсказку, это бы мне очень помогло.

Ответы [ 2 ]

2 голосов
/ 24 апреля 2019

Вы не можете использовать push напрямую, как вы делаете, так как в документации указано (https://firebase.google.com/docs/database/admin/save-data?hl=en-us): "Вызов push () вернет ссылку на новый путь данных, который вы можете использовать для получения ключа или установки данных следующий код приведёт к тем же данным, что и в предыдущем примере, но теперь у нас будет доступ к сгенерированному уникальному ключу "

Но на той же странице есть ваш улов:

// Generate a reference to a new location and add some data using push()
var newPostRef = postsRef.push();

// Get the unique key generated by push()
var postId = newPostRef.key;
1 голос
/ 24 апреля 2019

Обновление: я решил свою проблему:

Спасибо @ Марко за то, что показал мне правильное направление.

<script>
    function retrievedata(){

    var iduser = window.user;
    var uiduser = iduser.uid;

    var database = firebase.database();
    var ref = database.ref('productspushed'+'/'+uiduser);
    var ref2 = database.ref('products');

    console.log("connected to firebase");

      $.get(window.location.href, function(data){ 

      $("tr.woocommerce-cart-form__cart-item.cart_item").each(function(i, obj) {
          const name = $('td.product-name', obj).text();
          const nameok = name.trim();
          console.log(nameok);

          const url = $('a', obj).eq(1).attr('href');
          console.log(url);

          const imgurl = $('img.attachment-woocommerce_thumbnail.size-woocommerce_thumbnail', obj).attr('srcset').split(',').pop().trim().split(' ')[0];
          console.log(imgurl);

          const price = $('span.woocommerce-Price-amount.amount', obj).eq(0).text().replace(/€/, '');
          console.log(price);

          const data = {title: nameok, 
          imgurl: imgurl,
          price: price,
          url: url,
          };

          var newProductKey = ref.push().key;


          var updates = {};
          updates['/products/' + newProductKey] = data;
          updates['/productspushed/' + uiduser + '/' + newProductKey] = data;

          return firebase.database().ref().update(updates);


          })
      })


    };

    </script>

это решение моего вопроса

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