将数据从 MongoDB 存储到状态 - 最佳选择

时间:2021-02-04 12:03:13

标签: reactjs mongodb mern

我是 MERN 堆栈的新手,只是将一个小博客站点项目放在一起进行一些练习...

就我而言,我正在检索所有博客文章,以便在主屏幕上简要列出,每篇文章都带有指向完整博客文章的链接。在这种情况下,数据已经被检索并存储在 React 状态。

问题是,当我访问完整的博客文章时,最好从已检索到的以状态保存的博客的完整列表中获取数据,还是应该使用 ID 再次从数据库中获取单个博客条目。

>

我有信心实施其中之一 - 我只是在考虑最佳实践,或者这样做的好处/危险?数据会不会不同步?

我是新手 - 温柔点! 谢谢大家的建议。

1 个答案:

答案 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 });

这样,您将只能获得所需的数据。通过实现这一点,当用户点击博客查看它时,您可以重新获取整个博客并获得最新结果(如果博客更新或添加了新的评论/投票,更改将被反映)。 希望这能回答您的问题。