【问题标题】:Fetching data from firebase based on foreign key基于外键从firebase获取数据
【发布时间】:2020-10-10 15:17:06
【问题描述】:

我正在使用 firebase 实时数据库,我想根据 categoryId 获取数据。

这是 Db 结构。

代码如下:

  Future<void> fetchAndSetProducts(String id) async { 
const url = 'https://random-9006.firebaseio.com/products.json';
try {
  final response = await http.get(url);
  final extractedData = json.decode(response.body) as Map<String, dynamic>;
  print(extractedData.toString()); 
}

如何构造 URL 以获取每个通过的 categoryId 的产品?

【问题讨论】:

  • 你为什么不使用 firebase 插件?
  • 刚刚学习@PeterHaddad
  • 我明白,但如果您使用以下插件github.com/FirebaseExtended/flutterfire,您可以更轻松地在 firebase 中获取和操作数据

标签: firebase dart firebase-realtime-database


【解决方案1】:

您可以使用以下插件从 firebase 获取数据:

内部pubspec.yaml

dependencies:
  firebase_database: ^4.1.1
  firebase_core: ^0.5.0+1

main()函数中初始化Firebase:

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  runApp(MyApp());
}

那么你可以通过以下方式获取数据:

Future<DataSnapshot> getData(String category){
 var dbRef = FirebaseDatabase.instance.reference().child("products");
 return await dbRef.orderByChild("categoryId").equalTo(category).once();
}

然后您可以在FutureBuilder 中调用此future 方法。对于FutureBuilder 检查:

https://flutter.dev/docs/cookbook/networking/fetch-data#5-display-the-data

https://api.flutter.dev/flutter/widgets/FutureBuilder-class.html

【讨论】:

  • 感谢详细的解释。你能告诉我如何通过 URL 获取吗?
【解决方案2】:

我想通了。

您将 URL 数据类型设为 final,然后 URL 变为:

 final url = 'https://mydburl.firebaseio.com/products.json?orderBy="categoryId"&equalTo="$id"';

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-26
    • 2019-03-30
    • 2020-01-27
    • 2018-09-01
    • 2019-10-08
    • 2018-07-10
    • 1970-01-01
    相关资源
    最近更新 更多