【发布时间】:2019-01-13 01:04:47
【问题描述】:
要点
我在我的应用程序中实现了一个赞按钮。让我们假设用户能够喜欢其他用户的产品。
问题
我现在想知道以下哪种方法是将这些喜欢存储在非关系数据库(在我的例子中是 MongoDB)中最有效和最可靠的方法。重要的是,没有用户可以两次喜欢一个产品。
可能的解决方案
(1) 将点赞者的用户 ID 存储在产品本身上,并通过likes.length 跟踪点赞数
// Product in database
{
likes: [
'userId1',
'userId2',
'userId3',
...
],
...
}
(2) 存储用户自己喜欢的所有产品,并通过产品上的数字跟踪喜欢的数量
// User in database
{
likedProducts: [
'productId1',
'productId2',
'productId3',
...
]
...
}
// Product in database
{
numberOfLikes: 42,
...
}
(3) 或许有更好的解决方案?
无论哪种方式,如果产品有很多喜欢或用户喜欢很多产品,则需要加载大量数据以显示喜欢并检查用户是否已经喜欢它。
【问题讨论】:
-
您的解决方案需要支持多少数据?有很多选择,但它们都有取舍,知道您预计会遇到什么限制会非常有帮助。
标签: database mongodb mongoose nosql non-relational-database