小编gug*_*der的帖子

Firestore:多个'array-contains'

我试图where()使用array-contains运算符使用多种方法过滤数据,但是我遇到以下错误:

An error occured: Error: 3 INVALID_ARGUMENT: 
A maximum of 1 'ARRAY_CONTAINS' filter is allowed.
Run Code Online (Sandbox Code Playgroud)

基本上,我有一个包含以下文档的集合:

product1 
  - node_sku ['sku1', 'sku2', 'sku3' ]

product2 
  - node_sku ['sku4', 'sku5', 'sku6' ]
Run Code Online (Sandbox Code Playgroud)

然后我有我希望在数据库中找到的项目的数组:

const list = ['sku4', 'sku2']
Run Code Online (Sandbox Code Playgroud)

我想搜索sku4sku2,如果发现任何返回对象.

我的问题是array-contains不允许多次运行.

这是我用来过滤的代码:

const list = ['sku4', 'sku2'];


let database = firestore_db.collection('glasses');
let ref = database;

list.forEach( (val) => { 
    ref = ref.where('node_sku' , 'array-contains' , val);
});
ref.get() 
.then( (snapshot) => glassesRequestComplete(snapshot, req, …
Run Code Online (Sandbox Code Playgroud)

javascript firebase google-cloud-firestore

6
推荐指数
3
解决办法
4394
查看次数

将数组转换为嵌套对象

假设我有以下数组:['product','model','version']

我想有一个对象,如:

{
    product: { 
        model: { 
            version: { 

            }
        }
     }
}
Run Code Online (Sandbox Code Playgroud)

但是,该阵列是动态的,因此它可以有2,3或更少的项目.如何以最有效的方式实现这一目标?

谢谢

javascript arrays ecmascript-6 babeljs

0
推荐指数
2
解决办法
163
查看次数