我正在用Firebase编写一个REST api作为我的数据库并且有一个服务/用户支持PUT来更新对象users /:userId 该对象具有以下结构
users : {
user_id_1 : {
user_name : 'BATMAN',
user_photos : {
'FBKEY1' : {
'photourl' : 'https:...'
},
'FBKEY2' : {
'photourl' : 'https:...'
}
}
}
}
FBKEY1和FBKEY2是使用Firebase推送生成的,任何客户端都可以对API执行更新(PUT)操作:/ users / user_id_1
更改user_name的示例我从客户端调用以下内容:
return usersFirebaseRef.child('user_id').once('value').then(function (snap) {
var snapObject = snap.val();
var user = {
user_name : updateDataObjFromClient.user_name ? updateDataObjFromClient.user_name : snapObject.user_name,
user_photos : snapObject.user_photos
};
return usersFirebaseRef.child('user_id').set(user);
});
上面注意我只是尝试更新user_name而不是user_photos,user_name属性更新得很好然而user_photos在firebase中的很长时间(1分钟+)和'FBKEY1'和'FBKEY2'之后得到更新改变为不同的东西(这就像推动重新发生的新键)。我不知道为什么会这样。此外,它并不总是一致的,即有时'FBKEY1'和'FBKEY2'甚至不会最终在Firebase中创建。不确定我做错了什么。