【发布时间】:2021-08-03 05:15:03
【问题描述】:
我正在尝试获取最新添加到数据库的信息。 我在互联网上看到了一种获取信息的方法,
await _lastKeyRef.once().then((DataSnapshot snapshot) {
if (snapshot.value != null) {
Map<dynamic, dynamic> _values = snapshot.value;
_values.forEach((key, value) {
.... code ...
});
{
{
但它给了我一个错误。
我留下代码,看看是否有人可以帮助我。
Picture of Realtime Database structure
final String _uid = SupermarketApp.sharedPreferences.getString(SupermarketApp.userUID);
final _turnRef = FirebaseDatabase.instance
.reference()
.child('cod')
.child('service');
Future<void> createTurn() async {
var _lastKeyRef = _turnRef.orderByKey().limitToLast(1);
DateTime _timeNow = new DateTime.now();
int _lastNumber;
int _setNumber;
await _lastKeyRef.once().then((DataSnapshot snapshot) {
if (snapshot.value != null) {
Map<dynamic, dynamic> _values = snapshot.value;
_values.forEach((key, value) {
_lastNumber = int.parse(key) + 1;
_setNumber = value['num'] + 1;
});
if (_setNumber > 99) _setNumber = 1;
_turnRef.child(_lastNumber.toString()).set(
{'app': true, 'user_id': _uid, 'date': _timeNow.toString(), 'num': _setNumber});
} else {
_turnRef
.child('1')
.set({'app': true, 'user_id': _uid, 'date': _timeNow.toString(), 'num': 1});
}
});
}
谢谢。
--编辑--
代码很好。 Exeption 是由于在实时数据库中将“1”作为键。我不知道为什么,但是我更改了密钥名称并且它可以工作。
【问题讨论】:
标签: flutter dart firebase-realtime-database