如何从 Flutter 中的 Firebase 实时数据库中按 categoryId 获取产品?

Posted

技术标签:

【中文标题】如何从 Flutter 中的 Firebase 实时数据库中按 categoryId 获取产品?【英文标题】:How can I get products by categoryId from Firebase Realtime Database in Flutter? 【发布时间】:2021-07-18 11:55:03 【问题描述】:

我正在尝试从 Flutter 中的 Firebase 实时数据库中获取并显示分类产品。每个产品的 product.json 中都有特定的 categoryIds。为此,我写了一个这样的查询。 但我无法获得产品。这个要怎么写?

谢谢。

static Future getProductsByCategoryId(int categoryId)
   return http.get("https://--projectlink--.firebaseio.com/myapp/products.jsoncategoryId=$categoryId");

【问题讨论】:

“我买不到产品” 为什么不呢?您分享的代码有什么问题? http.get("https://--projectlink--.firebaseio.com/myapp/products.json");当我调用此查询时,产品会显示出来,但是当我使用 categoryId 调用它时,我什么也得不到。 它提供所有产品而不是带有 categoryId 的特定产品 【参考方案1】:

您构建的 URL 错误。对于 Firebase REST API,.json 后缀必须位于 URL 的末尾。

所以:

http.get("https://--projectlink--.firebaseio.com/myapp/products.json?orderBy=\"categoryId\"&equalTo=\"$categoryId\"");

【讨论】:

E/flutter (4509): [ERROR:flutter/lib/ui/ui_dart_state.cc(177)] 未处理异常:FormatException:意外字符(在第 2 行,字符 1)E/flutter( 4509): 对不起,但不工作 是的,我现在意识到您正在尝试进行查询,这看起来与您的查询完全不同。我更新了我的答案,但大多数情况下这只是字符串操作,直到您匹配文档:firebase.google.com/docs/database/rest/… 非常感谢您的回答,但它没有再次起作用。我试过 json-server 那里没有问题。但是,firebase 无法使用相同的查询。 这是一个针对测试数据库中数据的有效 URL:https://***.firebaseio.com/67244097.json?orderBy="categoryId"&equalTo="a" 检查您的代码是否生成相同的 URL。 感谢您的回答。我解决了。它给出了未将 indexOn 属性添加到颤动数据库规则的错误原因。

以上是关于如何从 Flutter 中的 Firebase 实时数据库中按 categoryId 获取产品?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Flutter 中的 Firebase 实时数据库中按 categoryId 获取产品?

如何从 Flutter 中的 Firebase 的 UID 获取任何用户的电子邮件? [复制]

如何使用 Flutter 中的 UserID 从 Firebase Firestore 检索数据?

Flutter:如何将元素添加到 Firebase 数据库中的映射字段?

如何使用firebase更改flutter项目中的API KEY?

Flutter 和 Firebase:从 Firebase 中的数组中删除项目(地图)