Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果firebase中存在数据,则更新数据_Firebase_Ionic Framework_Firebase Realtime Database - Fatal编程技术网

如果firebase中存在数据,则更新数据

如果firebase中存在数据,则更新数据,firebase,ionic-framework,firebase-realtime-database,Firebase,Ionic Framework,Firebase Realtime Database,我正在尝试更新数据(如果存在) var ref = firebase.database().ref().child('users'); var refUserId = firebase.database().ref().child('users').orderByChild('id').equalTo(Auth.$getAuth().uid); refUserId.once('value', function (snapshot) { console.log(snapshot);

我正在尝试更新数据(如果存在)

var ref = firebase.database().ref().child('users');
var refUserId = firebase.database().ref().child('users').orderByChild('id').equalTo(Auth.$getAuth().uid);
refUserId.once('value', function (snapshot) {
        console.log(snapshot);
        if (snapshot.exists()) {
          snapshot.ref().update(vm.user_infos);
        } else {
        ref.push({
          player: vm.user_infos.player,
          id: vm.user_infos.id
        }, function(error) {
        console.log(error);
    })
  }
});
推送工作正常,但更新失败

snapshot.ref不是一个函数

在快照()日志控制台中:

我也试过这样做:

if (snapshot.exists()) {
    refUserId.update({
      player: vm.user_infos.player,
      id: vm.user_infos.id
    }, function(error) {
    console.log(error);
})
结果:

refUserId.update不是一个函数

用户结构


第一个问题是快照是一个对象,而不是一个函数

第二个是快照引用了
用户
路径,因此您应该像下面这样检查与查询匹配的用户:

var ref=firebase.database().ref().child('users');
var refueserid=ref.orderByChild('id').equalTo(Auth.$getAuth().uid);
refUserId.once('value',函数(快照){
if(snapshot.haschilds()){
snapshot.forEach(函数(子函数){
child.ref.update(虚拟机用户信息);
});
}否则{
snapshot.ref.push({
播放器:vm.user\u infos.player,
id:vm.user\u infos.id
});
}
});
如果您想知道
更新
推送
何时完成,您可以使用承诺:

referserid
.once('值')
.then(功能(快照){
if(snapshot.haschilds()){
返回snapshot.forEach(函数(子函数){
child.ref.update(虚拟机用户信息);
});
}否则{
返回snapshot.ref.push({
播放器:vm.user\u infos.player,
id:vm.user\u infos.id
});
}
})
.然后(函数(){
console.log('update/push done');
})
.catch(函数(错误){
console.log(错误);
});

第一个问题是快照是一个对象,而不是一个函数

第二个是快照引用了
用户
路径,因此您应该像下面这样检查与查询匹配的用户:

var ref=firebase.database().ref().child('users');
var refueserid=ref.orderByChild('id').equalTo(Auth.$getAuth().uid);
refUserId.once('value',函数(快照){
if(snapshot.haschilds()){
snapshot.forEach(函数(子函数){
child.ref.update(虚拟机用户信息);
});
}否则{
snapshot.ref.push({
播放器:vm.user\u infos.player,
id:vm.user\u infos.id
});
}
});
如果您想知道
更新
推送
何时完成,您可以使用承诺:

referserid
.once('值')
.then(功能(快照){
if(snapshot.haschilds()){
返回snapshot.forEach(函数(子函数){
child.ref.update(虚拟机用户信息);
});
}否则{
返回snapshot.ref.push({
播放器:vm.user\u infos.player,
id:vm.user\u infos.id
});
}
})
.然后(函数(){
console.log('update/push done');
})
.catch(函数(错误){
console.log(错误);
});

谢谢。但是在更新之后,它不是更新信息,而是创建一个新的感谢。我刚刚在代码中修改了它:child.ref().update(vm.user\u infos);为此:child.ref.update(vm.user\u infos);很好,谢谢。但是在更新之后,它不是更新信息,而是创建一个新的感谢。我刚刚在代码中修改了它:child.ref().update(vm.user\u infos);为此:child.ref.update(vm.user\u infos);运作良好