基于外键从firebase获取数据

基于外键从firebase获取数据,firebase,dart,firebase-realtime-database,Firebase,Dart,Firebase Realtime Database,我正在使用firebase实时数据库,我想根据categoryId获取数据 这里是数据库结构 代码如下: Future<void> fetchAndSetProducts(String id) async { const url = 'https://random-9006.firebaseio.com/products.json'; try { final response = await http.get(url); final extractedData = j

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

这里是数据库结构

代码如下:

  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()); 
}
Future fetchAndSetProducts(字符串id)异步{
常量url=https://random-9006.firebaseio.com/products.json';
试一试{
最终响应=等待http.get(url);
最终extractedData=json.decode(response.body)作为映射;
打印(extractedData.toString());
}

如何构造URL,以便根据传递的类别ID获取产品?

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

内部
publispec.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();
}
Future getData(字符串类别){
var dbRef=FirebaseDatabase.instance.reference().child(“产品”);
return wait dbRef.orderByChild(“categoryId”).equalTo(category).once();
}
然后可以在
FutureBuilder
中调用此
future
方法。对于
FutureBuilder
检查:

我想出来了

将URL数据类型设置为final,URL将变为:

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

你为什么不使用firebase插件?只是学习@PeterHaddadI理解,但是如果你使用以下插件,那么在firebase中获取和操作数据会更容易。感谢详细的解释。你能告诉我如何通过URL获取数据吗?