我目前正在尝试使用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。如果你们能给我一个提示,它将对我有很大帮助。
答案 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>
是我问题的解决方案