gpt4 book ai didi

javascript - 移动节点后,从 prevRef 到 newRef 如何更新 Firebase 内的特定数据?

转载 作者:行者123 更新时间:2023-12-03 00:39:43 25 4
gpt4 key购买 nike

我使用下面的代码将特定数据从 ('Pending') 节点复制到 ('Approved') 节点。它仅复制包含数据的usernamerequest_status 的节点。复制后如何更新 userid 内的 request_status

var oldRef = firebase.database().ref().child('Request').child('Pending');
var newRef = firebase.database().ref().child('Request').child('Approved');

function moveFbRecord(oldRef, newRef) {
oldRef.once('value', function(snap) {
newRef.update( snap.val(), function(error) {

if( !error ) { oldRef.remove();}
else if( typeof(console) !== 'undefined' && console.error ) { console.error(error); }
});
});
newRef.limitTolast(1).update({ snap.val().request_status: "Approved" });<<< I tried inserting this code but I think it messes up every code in my .js file
}

我应该在哪里放置更新代码行?

newRef.limitTolast(1).update({ snap.val().request_status: "Approved" });

最佳答案

更新新节点中的状态:

oldRef.once('value', function(snap)  {
var data = snap.val();
data.request_status = "Approved";
newRef.update(data, function(error) {
if( !error ) { oldRef.remove(); }
else if( typeof(console) !== 'undefined' && console.error ) { console.error(error); }
});
});

您甚至可以将旧节点的删除和新节点的写入合并到一个多位置更新中。关键是您提供希望 Firebase 更新的所有数据的完整路径:

oldRef.once('value', function(snap)  {
var data = snap.val();
data.request_status = "Approved";
var updates = {};
updates["Request/Approved/"+snap.key] = data
updates["Request/Pending/"+snap.key] = null;
firebase.database().ref().update(updates);
});

此方法的重要优点是所有这些更新要么都成功,要么都不成功。因此,旧位置不可能有任何残留数据。

关于javascript - 移动节点后,从 prevRef 到 newRef 如何更新 Firebase 内的特定数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53511314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com