Firebase:按键排序时,传递给startAt(),endAt()或equalTo()的参数必须是字符串

时间:2017-01-29 01:17:17

标签: javascript firebase firebase-realtime-database

考虑使用其键为数字的子项的ref(以便使用orderByKey“具有可以解析为32位整数的键的子项首先按升序排序”)

这样做的:

ref.orderByKey().startAt(5)

我收到以下错误:

  

按键排序时,传递给startAt(),endAt()或equalTo()的参数必须是字符串

startAt的文档中,我看到了:

  

与orderByKey()结合使用时,该值必须是字符串。

我可以用ref.orderByKey().startAt("5")替换它吗?那仍然会使用数字而不是字典顺序运行startAt吗?

2 个答案:

答案 0 :(得分:3)

所有Firebase密钥都是字符串。如果使用带数字键的隐式数组强制,则应强烈考虑切换到位置作为子属性。所以不是:

0: {foo: 'bar'}

可是:

-Kpushidgoeshere: {position: 0, foo: 'bar'}

然后你会orderByChild('position').startAt(5)来实现按位置排序的理想结果。数字键字符串效率低,通常难以在Firebase中使用。

答案 1 :(得分:1)

在firepad代码中,我找到了将数字转换成字典字符串的方法,以便它们可以安全地用作键:

pandas