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
Meteor 作为用户名或用户ID的文档创建者_Meteor - Fatal编程技术网

Meteor 作为用户名或用户ID的文档创建者

Meteor 作为用户名或用户ID的文档创建者,meteor,Meteor,在文档的meteor集合中,我有一个creator属性。建议将用户名(更直观)或userId(即user.\u id)存储为creator属性吗?更标准的做法是什么?我总是通过id加入收藏,我建议您也这样做。id永远不会更改,但基础数据可能会更改。在本例中,如果用户更改其用户名,则加入将被中断。我始终按id加入集合,我建议您也这样做。id永远不会更改,但基础数据可能会更改。在本例中,如果用户更改其用户名,则加入将被中断。您使用用户名的几个原因。\u id 用户id对URL更友好(无UTF-8、

在文档的meteor集合中,我有一个creator属性。建议将用户名(更直观)或userId(即user.\u id)存储为creator属性吗?更标准的做法是什么?

我总是通过id加入收藏,我建议您也这样做。id永远不会更改,但基础数据可能会更改。在本例中,如果用户更改其用户名,则加入将被中断。

我始终按id加入集合,我建议您也这样做。id永远不会更改,但基础数据可能会更改。在本例中,如果用户更改其用户名,则加入将被中断。

您使用用户名的几个原因。\u id

  • 用户id对URL更友好(无UTF-8、其他语言等)
  • 用户。\u id是静态的
  • Mongo和Minimongo擅长查找和更新具有_id的集合

使用User.\u id而不是用户名的几个原因

  • 用户id对URL更友好(无UTF-8、其他语言等)
  • 用户。\u id是静态的
  • Mongo和Minimongo擅长查找和更新具有_id的集合

使用用户集合中的_id的最佳理由是,所有meteor方法和发布函数都提供了
此.userId
来识别拨打电话的用户。该
userId
是您所掌握的关于谁在发出客户端请求的唯一信息


如果您在
Meteor.users
中使用用户名或其他唯一字段,则始终需要按id查找用户以获取其他字段

使用用户集合中的_id的最佳理由是,所有meteor方法和发布函数都提供了
this.userId
来识别发出呼叫的用户。该
userId
是您所掌握的关于谁在发出客户端请求的唯一信息


如果您在
Meteor.users
中使用用户名或其他唯一字段,则始终需要按id查找用户以获取其他字段

对于文档数据库,答案通常是“两者都有”

存储
userId
是必需的,因为它是唯一保证不会更改的字段(正如其他人所指出的)

存储“非规范化”数据通常也是值得的。在某些情况下,它实际上是必需的

以发票上的行项目为例。它需要是静态的、及时的快照。您需要在购买时存储产品信息,即使稍后供应商可能会更改该产品的名称或其他特征

在我们的应用程序中,除了用户ID之外,有时还会存储用户配置文件信息(姓名、联系人信息等)。在某些情况下,它完全是出于性能原因,在另一些情况下,它是审计报告中使用的快照,不得更改

在性能案例中,如果“授权源”中的“非规范化”数据发生更改,您可能希望有适当的流程来更新该数据。在快照情况下,与发票行项目一样,您希望明确不更新它们。有时,数据过时是可以的,不值得为其保持更新的复杂性

有关这种“文档与关系”设计讨论的一个好例子,请查看以下两篇博客文章:


对于文档数据库,答案通常是“两者都有”

存储
userId
是必需的,因为它是唯一保证不会更改的字段(正如其他人所指出的)

存储“非规范化”数据通常也是值得的。在某些情况下,它实际上是必需的

以发票上的行项目为例。它需要是静态的、及时的快照。您需要在购买时存储产品信息,即使稍后供应商可能会更改该产品的名称或其他特征

在我们的应用程序中,除了用户ID之外,有时还会存储用户配置文件信息(姓名、联系人信息等)。在某些情况下,它完全是出于性能原因,在另一些情况下,它是审计报告中使用的快照,不得更改

在性能案例中,如果“授权源”中的“非规范化”数据发生更改,您可能希望有适当的流程来更新该数据。在快照情况下,与发票行项目一样,您希望明确不更新它们。有时,数据过时是可以的,不值得为其保持更新的复杂性

有关这种“文档与关系”设计讨论的一个好例子,请查看以下两篇博客文章:


这是一个主观问题,所以我将发表意见作为评论:我使用
user.\u id
,这既因为它已经被考虑为唯一的,也因为它允许用户更改他们的名称(就像在stackoverflow上一样)。这是一个主观问题,所以我将发表意见作为评论:我使用
user.\u id
,这是一个有趣的问题和答案,因为我在学习meteor的take at docs/collections时试图忘却我的关系背景,因为它并不总是符合stock meteor的建议。话虽如此,为了减少db往返,有时不认为最好包含必需的属性而不是id吗?例如,帖子上的“标签”,其中a)底层数据不太可能更改,b)经常被查询,而c)唯一性不太重要。你对此有什么看法?关于这一点,我有很多话要说,但我认为这篇文章的非规范化部分总结得很好。我会说,我认为mongodb是meteor only bec的不错选择