javascript firebase一般筛选需要每个组合的索引

ygya80vv  于 2023-09-29  发布在  Java
关注(0)|答案(1)|浏览(76)

bounty还有4天到期。此问题的答案有资格获得+50声望奖励。Jul Pod正在寻找一个规范答案

我有以下代码来使用过滤器查询属性(分页):

const propertyCollectionRef = db.collection('properties')

    let queryRef = propertyCollectionRef;

    let query: any = db.collection('properties');

    if (filters) {
        for (const [key, value] of Object.entries(filters)) {
            if (key !== 'page') {
                switch (key) {
                    case "price":
                        query = query.where(key, '<=', parseInt(value));
                        break;
                    case "bathrooms":
                        query = query.where(key, '==', parseInt(value));
                        break;
                    case "beds":
                        query = query.where(key, '==', parseInt(value));
                        break;
                    case "min-area":
                        query = query.where("area", '>=', parseInt(value));
                        break;
                    case "max-area":
                        query = query.where("area", '<=', parseInt(value));
                        break;
                    case "typ":
                        query = query.where(key, '==', value);
                        break;
                    default:
                        query = query.where(key, '==', value);
                        break;
                }
            }
        }
    }


    const offset = (page - 1) * pageSize

    const querySnapshot = await query
        .limit(pageSize)
        .offset(offset).get();

firebase希望我为每个查询组合创建一个索引(

code: 9,
  details: 'The query requires an index. You can create it here:...

),例如,我需要创建一个用于过滤pricetype。而且在对pricetypebathrooms进行滤波时也是一个
怎么可能让它更“通用”-我想不出firebase能让它变得如此复杂…

bksxznpy

bksxznpy1#

Firebase希望我为每个查询组合创建一个索引。
Cloud Firestore通过要求每个查询都有索引来保证查询性能。最基本的查询所需的索引将自动为您创建。你什么都不用做。但是,对于像您这样的更复杂的查询,需要索引。需要注意的一点是,您最多可以创建200个索引。如果您需要超过200个,那么您可以联系Firebase Support请求增加此限制。
除此之外,indexes are created automatically。因此,像你这样的查询不能在没有创建索引的情况下工作。
索引是自动创建的,但仍然需要我点击链接。
是的.如果您不想通过单击URL或直接在Firebase控制台中创建索引来自己执行此操作,则应考虑使用Firebase CLI。这使您可以非常轻松地使用Firebase CLI部署索引。
真的是这样吗?大多数查询只使用一个范围过滤器,其余的都在客户端进行?
对于这样的查询,是的,这里是Firestore中所有查询限制的列表。

相关问题