Firebase:如何强制数据库按输入顺序存储值?

时间:2016-08-01 17:01:32

标签: javascript firebase firebase-realtime-database

目前,Firebase不会按照输入的顺序存储数据。对于前 - 可能有2个现有的孩子,并插入一个新的孩子,新的孩子去和现有的孩子坐在中间!我想这可以按字母顺序排列,但我想只以正确的顺序存储数据。

firebase.database().ref('someChildRef').set({
    //Could insert anywhere
});

我认为push可以按正确的顺序插入它,但push也会生成一个我不想要的唯一键,我想只使用set以正确的顺序插入数据。

3 个答案:

答案 0 :(得分:0)

听起来您正在寻找Firebase的push()方法,该方法根据时间戳生成唯一键:

firebase.database().ref('someChildRef').set({
    //Will result at "the end"
});

答案 1 :(得分:0)

var messageListRef = new Firebase('https://samplechat.firebaseio-demo.com/message_list');
var newMessageRef = messageListRef.push();
newMessageRef.set({ 'user_id': 'fred', 'text': 'Yabba Dabba Doo!' });
// We've appended a new message to the message_list location.
var path = newMessageRef.toString();

尝试使用push()方法而不是设置。根据他们的文档:

  

push()生成的唯一名称以客户端生成的时间戳为前缀,以便按时间顺序对结果列表进行排序。

参考:https://www.firebase.com/docs/web/api/firebase/push.html

答案 2 :(得分:0)

无法将数据插入Firebase到所需位置。 Firebase数据按字母顺序排序,所有新插入的数据都将相应重新排列。

使用query规则按您想要的顺序返回数据。

如:

  • orderByChild()
  • orderByKey()
  • orderByValue()
  • equalTo()

你对push()是正确的,它总会创建一个唯一的密钥并添加到最后,就像推送到数组将添加到最后一样。