android - 如何即时订购数据
问题描述
我是 react native 或 firebase 的初学者,所以我真的不知道如何解释这一点,但我不知道如何从数据库中订购接收到的数据。
假设我有一个数据库:
appname
items
-some_random_generated_string
-name: "someString"
-value: "999"
-type: 0
-some_random_generated_string
-name: "someString"
-value: "999"
-type: 0
我已经尝试过所有订单类型并设置了 .indexOn 规则,但还没有找到解决方案。还尝试添加一个 id,然后用它订购,但没有找到解决方案。
我想这是访问数据库以获取项目,所以我也尝试在同一行上订购它们,但除了限制数据量之外没有任何效果。
let itemsRef = db.ref('items');
然后我有:
componentDidMount() {
itemsRef.on('value', snapshot => {
let data = snapshot.val();
let items = Object.values(data);
this.setState({ items });
});
}
我正在添加这样的内容:
let addItem= (item, value, type) => {
db.ref('/items').push({
name: item,
value: value,
type: type,
});
};
基本上我想要实现的是以与添加相反的顺序显示数据,因此添加的最后一个将显示在顶部。
解决方案
你可以通过两种方式做到这一点。
首先简单地调用.reverse()
你当前的数组。如果您调用 push 方法来添加新项目,通常分配给每个子担保的密钥按时间顺序存储。因此,这样称呼它就足够了:
componentDidMount() {
itemsRef.on('value', snapshot => {
let data = snapshot.val();
let items = Object.values(data);
items.rerverse();
this.setState({ items });
});
}
虽然我不知道是否let items = Object.values(data);
在每个浏览器上都保证您的数据按预期排序。顺便说一句,许多旧浏览器不支持Object.values()
反对Object.keys()
,但如果你在 ReactNative 中使用它,那就没问题了。
如果您想完全确定它的顺序正确,请将其重写为:
componentDidMount() {
itemsRef.on('value', snapshot => {
let items = [];
// forEach always send you the children in the right order
snapshot.forEach(snap => {
items.push(snap.val())
})
items.rerverse();
this.setState({ items });
});
}
最后,如果您不信任 firebase 的自动生成的 id,另一种方法是添加对象:
let addItem = (item, value, type) => {
db.ref('/items').push({
name: item,
value: value,
type: type,
timestamp: new Date().getTime()
});
};
orderByChild
并在您获取数据时使用firebase的功能,timestamp
作为孩子使用,然后.reverse()
像我们之前一样再次使用它。
推荐阅读
- python - 如何从python中检测less -R
- c# - 如何为加载的事件创建附加属性以关注 VB.Net 和 WPF 中的元素?
- r - 如何创建一个矩阵,行上有随机数而不是替换,但在 col 中可以替换,R 语言
- traefik - 示例 traefik 到 docker 使用 http 工作,但不使用 https
- ibm-cloud - 如何访问 IBM Cloud Compose RabbitMQ 日志?
- swift - 将字符串转换为货币 Swift
- jquery - 无法在 Select2 下拉列表中选择以相同开头的其他内容
- python - Python:在某些行之间提取行
- ruby-on-rails - 在rails中与cancancan的多对多关联
- monaco-editor - 有没有办法完全隐藏摩纳哥编辑的阴沟