我是 MERN 堆栈的新手,只是将一个小博客站点项目放在一起进行一些练习...
就我而言,我正在检索所有博客文章,以便在主屏幕上简要列出,每篇文章都带有指向完整博客文章的链接。在这种情况下,数据已经被检索并存储在 React 状态。
问题是,当我访问完整的博客文章时,最好从已检索到的以状态保存的博客的完整列表中获取数据,还是应该使用 ID 再次从数据库中获取单个博客条目。
>我有信心实施其中之一 - 我只是在考虑最佳实践,或者这样做的好处/危险?数据会不会不同步?
我是新手 - 温柔点! 谢谢大家的建议。
答案 0 :(得分:0)
我认为在获取主页的所有博客时,您应该只获取将为每个博客显示的数据,而不是获取整个博客。 假设您的每个博客都有以下字段:
{
"title" : "Title of blog",
"body" : "This is my blog, ...."
"comments": [comment1, comment2, ...]
"upvotes" : [],
"downvotes" : [],
"author" : ObjectId("ref to the author schema"),
"time" : 10:30 PM
}
在主页上,我假设您只需要显示作者、标题、时间和正文的一些行,因此您只需要获取这些内容而不是获取整个博客。 为此,您可以使用猫鼬的 .select() 函数:
const blogs = await Blogs.find({}).select({ title: 1, time: 1, body: 1, author: 1 });
这样,您将只能获得所需的数据。通过实现这一点,当用户点击博客查看它时,您可以重新获取整个博客并获得最新结果(如果博客更新或添加了新的评论/投票,更改将被反映)。 希望这能回答您的问题。