Javascript 如何形成firestore查询,比较单个集合中的两个字段?

Javascript 如何形成firestore查询,比较单个集合中的两个字段?,javascript,firebase,google-cloud-firestore,Javascript,Firebase,Google Cloud Firestore,我是firebase和数据库的新手,所以如果是一些琐碎的事情,请原谅。 我的收藏如下: Rooms{ Room1{ roomName, user1, user2, },... } 我想过滤结果,这样我只能得到user1字段不同于当前用户id且user2等于空字符串的房间 我读到没有或在firestore中有查询,你不能这样做 const openRoomsQuery = roomsRef.where("user1", "!=&quo

我是firebase和数据库的新手,所以如果是一些琐碎的事情,请原谅。 我的收藏如下:

Rooms{
  Room1{
    roomName,
    user1,
    user2,
  },...
}
我想过滤结果,这样我只能得到user1字段不同于当前用户id且user2等于空字符串的房间

我读到没有或在firestore中有查询,你不能这样做

const openRoomsQuery = roomsRef.where("user1", "!=", user.uid).where("user2", "==", "");
const notMineRoomsQuery = roomsRef.where("user1", "!=", user.uid);
const openRoomsQuery = notMineRoomsQuery.where("user2", "==", "");
也不是这样

const openRoomsQuery = roomsRef.where("user1", "!=", user.uid).where("user2", "==", "");
const notMineRoomsQuery = roomsRef.where("user1", "!=", user.uid);
const openRoomsQuery = notMineRoomsQuery.where("user2", "==", "");

如何以相当简单的方式(可能不将用户字段放入单个数组字段)执行此操作?

Firestore不支持这种类型的查询。您只能将字段与where子句中提供的特定值进行比较。这是什么意思?我提供代码的两种方式都做到了。我只是没用“!=”而已。它工作得很好。(哦,是的。我想第二个问题没有用。对不起)我想我误解了这个问题,但处理方式是一样的-Firestore不支持逻辑或查询。您必须执行两个查询并在应用程序中合并结果。你的问题实际上是这一问题的重复: