【发布时间】:2020-12-01 03:59:27
【问题描述】:
我正在制作“点赞”功能(facebook 或 instagram 之类的),但不确定什么是正确的做法。
我可以想到两种方法....(用户不能两次喜欢同一篇文章)
A. “用户”数据具有一组“文章”ID...
// simplified user schema MongoDB
const UserSchema ={
id:ObjectID,
username:String,
likes:[{type:ObjectID,ref:"Article"}]
}
// simplified article schema
const AriticleSchema = {
id:ObjectID,
title:String,
content:String,
likes:Number,
}
B. “文章”数据具有一组“用户”ID...
// simplified user schema MongoDB
const UserSchema ={
id:ObjectID,
username:String,
}
// simplified article schema
const AriticleSchema = {
id:ObjectID,
title:String,
content:String,
likes:[{type:ObjectID,ref:"User"}],
}
我尝试了两种方法,当我只有很少的用户和很少的文章时,它们都运行良好。
但是如果我有数千个“用户”和数千个“文章”呢?我担心每次我请求“用户”数据或“文章”数据(一次说几个)时,我还必须带数千个数组?我认为必须有更好的方法来做到这一点......
您知道人们或公司是如何做到这一点的吗?我想知道“Like”功能的工作原理。
谢谢。
** 添加一些细节 **
我希望“用户”可以登录阅读文章,然后按“喜欢按钮”来点赞。每次唯一用户喜欢时,文章“喜欢”将增加 1(无重复)。已经喜欢“文章”的人可以“不喜欢”它或“用户”会看到他们已经喜欢了“文章”,这意味着我们必须知道“用户”是否喜欢这个“文章”。其他人不需要知道。
【问题讨论】:
-
您设计数据架构的方式最终取决于您的访问模式。你想用这个模型在高层次上构建什么功能?
-
与数据的其他用途相比,您似乎更希望显示“谁喜欢过特定文章”。这就是说您要确保优化特定查询。
-
我希望“用户”可以登录阅读文章,然后按“喜欢按钮”来点赞。每次唯一用户喜欢时,文章“喜欢”将增加 1(无重复)。已经喜欢“文章”的人可以“取消”它或“用户”会看到他们已经喜欢了“文章”,这意味着我们必须知道“用户”是否喜欢这个“文章”......谢谢建议
标签: javascript node.js arrays database mongodb