【问题标题】:Perform a query in Firestore where a field is in a array在 Firestore 中执行查询,其中字段位于数组中
【发布时间】:2022-10-12 21:43:50
【问题描述】:

我正在尝试从 Firestore 获取一些文档,其中包含一个我认为不会有问题但我没有实现的查询。我的状态中有一些数据,如下所示:

const favorites = [ "1_Test1", "2_Test2" ]

const collectionRef = collection( FirebaseDB, `users/${ uid }/scores` );
const q = query(collectionRef, where('id','in',`${favorites}`));

const [scores] = useCollectionData( q, collectionRef );
  console.log(scores)

但这给了我一个空数组。我尝试了以下代码只是为了测试它是否到达 Firestore:

const favorites = [ "1_Test1", "2_Test2" ]

const collectionRef = collection( FirebaseDB, `users/${ uid }/scores` );
const q = query(collectionRef, where('id','==','1_Test1'));
    
const [scores] = useCollectionData( q, collectionRef );
  console.log(scores)

这工作得很好。它给了我那个特定的文件。所以我在第一个查询中做错了什么。我已经尝试了几种方法,例如删除括号,但我不明白这是问题所在。

【问题讨论】:

    标签: javascript arrays google-cloud-firestore


    【解决方案1】:

    问题是您在`${favorites}` 中使用了字符串插值。这会将 favorites 转换为字符串,然后 Firestore 使用该字符串进行比较。

    要解决此问题,请像这样传递数组:

    const q = query(collectionRef, where('id', 'in', favorites));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-09
      • 2019-10-05
      • 1970-01-01
      • 2019-06-14
      • 2019-11-01
      • 2020-12-22
      • 2019-02-06
      相关资源
      最近更新 更多