Javascript 带角度的Firebase:从查询中排除字段

Javascript 带角度的Firebase:从查询中排除字段,javascript,angular,typescript,firebase,Javascript,Angular,Typescript,Firebase,我想知道我的结构是否可用于firebase,或者我是否需要更改。下面是一个包含房间数组的/rooms示例: export class Room { id: number; password: string; state: number; messages: Message[] = []; } 和信息: export class Message{ author: string; message: string; playerExcluded

我想知道我的结构是否可用于firebase,或者我是否需要更改。下面是一个包含房间数组的/rooms示例:

export class Room {
    id: number;
    password: string;
    state: number;
    messages: Message[] = [];
}
和信息:

export class Message{
    author: string;
    message: string;
    playerExcluded: string;

}
现在我必须加载一个没有密码的房间(我想这部分是可能的?)以及message.playerExclude!=firebase.auth().currentUser.uid(看起来更难)

这意味着每个用户都将拥有除被排除在外的所有消息。 一种解决方案是从文件室中加载没有对象的字段(如id、状态),然后再进行另一个查询以加载消息,但这似乎不是最优的


在一个查询中是否可能或过于复杂?有什么建议吗?

根据Firebase文档,您应该这样做,而且既然您已经这样做了,您的结构应该还可以。这也意味着您需要执行两次查询以获取消息


从Firebase文档中:

如果将数据拆分为单独的路径(也称为非规范化),则可以根据需要在单独的调用中高效地下载数据。考虑这个扁平结构:

文件中还包括:

现在可以通过每次对话只下载几个字节来迭代房间列表,快速获取元数据以在UI中列出或显示房间。消息可以单独提取并在到达时显示,从而使UI保持快速响应


谢谢你的回答,艾萨克,我想你对我的主要问题的回答是否定的。这并没有回答我所有的问题,但我回顾了我的结构!
{
  // Chats contains only meta info about each conversation
  // stored under the chats's unique ID
  "chats": {
    "one": {
      "title": "Historical Tech Pioneers",
      "lastMessage": "ghopper: Relay malfunction found. Cause: moth.",
      "timestamp": 1459361875666
    },
    "two": { ... },
    "three": { ... }
  },

  // Conversation members are easily accessible
  // and stored by chat conversation ID
  "members": {
    // we'll talk about indices like this below
    "one": {
      "ghopper": true,
      "alovelace": true,
      "eclarke": true
    },
    "two": { ... },
    "three": { ... }
  },

  // Messages are separate from data we may want to iterate quickly
  // but still easily paginated and queried, and organized by chat
  // conversation ID
  "messages": {
    "one": {
      "m1": {
        "name": "eclarke",
        "message": "The relay seems to be malfunctioning.",
        "timestamp": 1459361875337
      },
      "m2": { ... },
      "m3": { ... }
    },
    "two": { ... },
    "three": { ... }
  }
}