将数据推送到具有相同ID的两个不同节点

时间:2019-04-23 23:58:18

标签: javascript firebase firebase-realtime-database

我目前正在尝试使用jquery将一些数据推送到Firebase。我工作正常,但是我无法将数据推送到具有相同ID的两个不同的子节点(ref和ref2)。

换句话说,当我使用我的代码时,在ref上推送的数据与在ref2上推送的数据具有不同的ID。

我尝试了很多事情,但未能获得预期的结果。

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);

      })
  })


};

我想将数据推送到具有相同ID的ref和ref2。如果你们能给我一个提示,它将对我有很大帮助。

2 个答案:

答案 0 :(得分:2)

您不能像您所做的那样直接使用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 :(得分:1)

更新:我已经解决了我的问题:

感谢@ Marco向我展示了正确的方向。

<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>

是我问题的解决方案