Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Collections Meteor中的公共用户状态存储在哪里?_Collections_Meteor_State_Denormalization - Fatal编程技术网

Collections Meteor中的公共用户状态存储在哪里?

Collections Meteor中的公共用户状态存储在哪里?,collections,meteor,state,denormalization,Collections,Meteor,State,Denormalization,假设我将聊天室作为Meteor应用程序的一部分,在每个聊天室中,用户应该看到聊天室中还有谁,以及所有其他聊天室中的用户数量 我应该将每个用户所在的聊天室存储在哪里?应该是吗 在提供的Meteor.users集合中,作为每个用户下的属性 在聊天室集合中,作为每个聊天室中的用户列表 对数据进行非规范化的正确方法是什么,这样用户就可以看到其他聊天室中的人数,而无需推送所有这些用户记录 一个相关的问题:我应该什么时候将东西存储在Meteor.users()中,而不是单独的包含用户ID和聊天室文档的集

假设我将聊天室作为Meteor应用程序的一部分,在每个聊天室中,用户应该看到聊天室中还有谁,以及所有其他聊天室中的用户数量

我应该将每个用户所在的聊天室存储在哪里?应该是吗

  • 在提供的
    Meteor.users
    集合中,作为每个用户下的属性
  • 聊天室
    集合中,作为每个聊天室中的用户列表
  • 对数据进行非规范化的正确方法是什么,这样用户就可以看到其他聊天室中的人数,而无需推送所有这些用户记录
一个相关的问题:我应该什么时候将东西存储在
Meteor.users()
中,而不是单独的包含用户ID和聊天室文档的集合,例如
聊天室参与者
?i、 e:

{ user: "foo", room: "room 1" }
{ user: "bar", room: "room 2" }

此外,是否有一种方法可以设置此设置,以便用户可以从多个窗口登录到同一应用程序,并且可以在不同的房间中使用?也就是说,特定用户的呈现不依赖于某个全局状态,该状态会使所有内容在会话之间发生变化。

在这种情况下,您应该将其写入
Meteor.users
文档。在一个文档中集中读/写越少越好,这样就不会成为瓶颈。查看如何利用高级用法。

您能否提供一个参考,说明为什么集中在一个文档上更糟糕?此外,使用
Meteor.users
和单独的
ChatRoomParticients
集合(其中包含用户及其相应聊天室的记录)之间有什么区别吗?我曾经看过一段谷歌视频/幻灯片,解释了如何在GAE数据存储(其可扩展的NoSQL)上创建博客,但我找不到它。第二个问题是:你可以两者兼得,但你不需要。因为你有多个收藏,所以要知道在哪里可以找到东西会更加困难。想象一下,将来您将为用户提供更多的2个属性。您是否要创建更多两个独立的集合?希望这是有意义的,因为我不知道如何在这里解释。问题是,如果我在users集合中为每个用户存储聊天室,我无法通过简单的查询获得每个聊天室中的用户数。至少,与为
聊天室参与者
中的几个字段编制索引相比,它似乎效率很低。是的,这是真的。也许最好在meteor talk或irc频道上问这个问题。