对于1%的用户来说,数据库服务器的行为似乎不太可能有所不同。更有可能的是,你的1%的用户所拨打的电话略有不同。很难确定与您共享的代码有什么区别,所以下面是一个有根据的猜测,希望能尽快解除您的封锁。
contactsRef.child(targetUID).child(contactID).update(contactObj);
预期:
update()
这有点微妙,不幸的是你没有展示你是如何构建的
contactObj
. 所以我举个例子。假设您从JSON开始:
"uid1": {
"name": "unknown",
"id": -1,
"full_name": "unknown",
"metadata": {
"last_seen": "20 minutes ago",
"reputation" 56
}
}
你在那个地方运行这个:
ref.update{
"name": "miles_b",
"id": 2687721
}
name
和
id
ref
"uid1": {
"name": "miles_b",
"id": 2687721,
"full_name": "unknown",
"metadata": {
"last_seen": "20 minutes ago",
"reputation" 56
}
}
但是现在说你还想更新
metadata/reputation
. 你可能认为这是可行的:
ref.update{
"name": "miles_b",
"id": 2687721,
"metadata": {
"reputation": 61
}
}
metadata
用你提供的对象。所以结果是:
"uid1": {
"name": "miles_b",
"id": 2687721,
"full_name": "unknown",
"metadata": {
"reputation" 61
}
}
这意味着
last_seen
要更新嵌套属性,请在键中包含其完整路径。所以:
ref.update{
"name": "miles_b",
"id": 2687721,
"metadata/reputation": 61
}
有了这些,你就可以
metadata/last_seen
,更新时
元数据/信誉
:
"uid1": {
"name": "miles_b",
"id": 2687721,
"full_name": "unknown",
"metadata": {
"last_seen": "20 minutes ago",
"reputation" 61
}
}