gpt4 book ai didi

javascript - 基于另一个字段值的 firebase 数据库更新字段

转载 作者:行者123 更新时间:2023-11-30 09:39:40 25 4
gpt4 key购买 nike

我在数据库中有两个字段,我想在更新 fieldB 之前将旧值从 fieldB 复制到另一个字段 fieldA:

MyDatabase.ref('/myusers/' + firebaseUser.uid).update({ 
fieldA: firebaseUser.uid.fieldB,
fieldB: firebase.database.ServerValue.TIMESTAMP
});


我收到一条错误消息,指出该属性未为 firebaseUser.uid.fieldB 定义。

我怎样才能以正确的方式实现这一点?

更新

这是在您的提示之后的样子:

MyDatabase.ref('/myusers/' + firebaseUser.uid).once('value').then(function (snapshot) {
var usrname = snapshot.val().username;
toastr.info('Success.', 'Welcome ' + usrname + '!');
$scope.oldfieldB = snapshot.val().fieldB;
});

MyDatabase.ref('/myusers/' + firebaseUser.uid).update({
fieldA: $scope.oldfieldB,
fieldB: firebase.database.ServerValue.TIMESTAMP
});

我得到同样的错误:undefined firebaseUser.uid.fieldA

最佳答案

在执行更新之前,您需要等待value事件:

var ref = MyDatabase.ref('/myusers/' + firebaseUser.uid);
ref.once('value').then(function (snapshot) {
return ref.update({
fieldA: snapshot.val().fieldB,
fieldB: firebase.database.ServerValue.TIMESTAMP
});
});

或者,如果您使用 transaction,则可以在单个调用中执行读取和写入操作:

var ref = MyDatabase.ref('/myusers/' + firebaseUser.uid);
ref.transaction(function (data) {
if (data !== null) {
data.fieldA = data.fieldB;
data.fieldB = firebase.database.ServerValue.TIMESTAMP;
}
return data;
});

关于javascript - 基于另一个字段值的 firebase 数据库更新字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41779354/

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