【发布时间】:2015-10-23 07:30:14
【问题描述】:
我正在尝试查找如何将用户与 Meteor 中的另一个集合文档相关联,但不确定如何执行此操作。
我的目标是找到最有效且面向未来的方法来存储这些信息,尽管我现在知道这可能被视为有些主观。
在我的示例中,我使用“消息”集合并将用户 ID 作为“发件人”和“收件人”存储在此文档中,收件人是一组用户 ID。
当我想显示有关此消息的发件人/收件人的信息时,我应该使用帮助程序来输出某些数据吗?或者在创建文档时将senderName 和senderAvatar 之类的内容添加到文档本身?还是我错过了另一种将用户与另一个可能更有效的对象相关联的方法?
这是一个 JSON 示例:
选项 1 - 简单地将用户 ID 存储在另一个对象上(消息)
{
"_id": "boDNs36xzLw7eLLhx",
"sender": "8jpS96b4T65g5ARug",
"recipient": "4Pa5i5vQ2gDtYQBDP",
"message": "A new message.",
"createdAt": "2015-10-22T21:18:18.291Z"
}
选项 2 - 存储有关文档本身的更多信息
{
"_id": "boDNs36xzLw7eLLhx",
"sender": "8jpS96b4T65g5ARug",
"senderName": "Joe Bloggs",
"senderAvatar": "http://myimg.com",
"recipient": "4Pa5i5vQ2gDtYQBDP",
"recipientName": "Bill Bloggs",
"recipientAvatar": "http://myotherimg.com",
"message": "A new message.",
"createdAt": "2015-10-22T21:18:18.291Z"
}
【问题讨论】:
-
您在询问是否应该对数据进行非规范化。给定一个两句话长的用例,不可能客观地回答。这个问题非常基于意见和广泛,不幸的是不适合这个网站。
-
如果你想让你的问题与主题相关,你必须提供一个示例结构(不需要实际代码,JSON 就可以)并提供一组明确的具体目标(例如“检索所有必要的数据,以显示谁在一个请求中发送了文件”)。
-
嗨安德烈,“最有效”是什么意思?您能否将其(和“最佳方式”)改写为具有客观答案的指标?尽量避免提出相对的问题(例如“什么更有效”)或固执己见(例如“什么是最好的方法”),因为这些短语可能会让原本很好的问题搁置。
-
谢谢你们,如果可能的话,我会尝试编辑问题,以便更客观。
-
您陈述的目标非常广泛和主观。 “面向未来”几乎没有任何意义,它在 Web 开发中的意义更小。如果没有明确的背景、基准和配置文件,很难评估“最有效”。
标签: mongodb meteor foreign-keys