【发布时间】:2021-05-30 17:36:53
【问题描述】:
我正在构建一个电子商务应用程序。我使用 Firestore 作为我的数据库。我想根据类别和价格范围过滤产品。 Firebase 需要创建一个索引“类别升序价格升序”。我得到了属于该类别和给定价格范围内的产品列表。但是,返回的列表也是按价格排序的。
如何禁用按价格排序?
编辑: 我正在使用 FireSQL 来查询我的 Firestore 数据库。下面我包含了我的 React 应用程序的一部分。
var sqlQuery = 'SELECT * FROM products WHERE';
if(selectedCategories.length > 0) {
var categoryQuery = "('" + selectedCategories.join("','") + "')";
sqlQuery += ` category IN ${categoryQuery} AND`;
}
sqlQuery += ` (price >= ${PriceLowerBound} AND price <= ${PriceUpperBound})`
fireSQL.query(sqlQuery).then(documents => {
setProductList(documents);
});
我目前有 4 种产品:
- product1:类别:“c1”,价格 189
- product2:类别:“c2”,价格 178
- product3:类别:“c1”,价格 128
- product4:类别:“c1”,价格 298
假设没有选择任何类别,那么查询将是 SELECT * FROM products WHERE (price >= 128 AND price ,我将按以下顺序获取产品:
- product3:类别:“c1”,价格 128
- product2:类别:“c2”,价格 178
- product1:类别:“c1”,价格 189
- product4:类别:“c1”,价格 298
当我第一次运行这个查询时,firebase 给了我一个错误和一个链接,我创建了以下索引:"category Ascending price Ascending"。由于这个索引,我得到了价格按升序排序的产品。不过,我希望能按之前的顺序获得产品。
我让用户能够更改 PriceLowerBound 和 PriceUpperBound,添加/删除要过滤的类别。我也想添加“ORDER BY price ASC/DESC”选项。所以,当我不写“ORDER BY”部分时,我不希望产品被排序。
【问题讨论】:
-
请发布您到目前为止尝试过的内容
标签: firebase google-cloud-firestore