在我的应用中,我使用Firebase的childByAutoId()
(swift)或.push()
(web)以下列格式插入一些数据:
- events
- $autoId
- time:
- name:
- $autoId
- time:
- name:
$autoId
是Firebase随机生成的密钥。 time
是推送数据的纪元时间。
我想允许用户修改每个插入的条目time
。但是,我希望将events
下的节点按其密钥和时间排序,Firebase在您使用.push()
时自然会按时间排序。但是,如果他们修改time
以使其实际上应该采用不同的顺序,则条目将无法正确排序。
是否有办法通过修改后的time
生成ID,以便如果将其插入events
,它的顺序是否正确?这样我就可以删除旧条目并插入新条目,只需复制数据。
答案 0 :(得分:-1)
由于Firebase的推送ID算法已有详细记录,因此您可以轻松修改该功能,以根据特定时间戳生成它们。
但是我建议将必要的值保留为每个子节点的命名属性。如果您需要能够按创建时间和修改时间进行排序,请保留两个单独的属性。这样您就不必依赖推送ID的行为,而是使用更明确命名的属性来完成您的需要。