Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js ExpressJS:获取页面的相关帖子和评论_Node.js_Mongodb_Express_Redux - Fatal编程技术网

Node.js ExpressJS:获取页面的相关帖子和评论

Node.js ExpressJS:获取页面的相关帖子和评论,node.js,mongodb,express,redux,Node.js,Mongodb,Express,Redux,假设我正在尝试建立一个博客。每个页面都有许多帖子,每个帖子都有许多评论。 我试图从Express/Mongo服务器返回以下JSON输出 page: { _id: <page_id> title: "page title" posts: [Post], comments: [Comment] // *Q2. notice comments are not nested under posts. } 我有几个问题 问题1。为什么我不能通过以下方式获得预期的输出

假设我正在尝试建立一个博客。每个
页面
都有许多
帖子
,每个
帖子
都有许多
评论
。 我试图从Express/Mongo服务器返回以下JSON输出

page: {
  _id: <page_id>
  title: "page title"
  posts: [Post],
  comments: [Comment] // *Q2. notice comments are not nested under posts.
}
我有几个问题

问题1。为什么我不能通过以下方式获得预期的输出

          res.json(Object.assign({},
            page.toObject(),
            posts,
            comments
          ))
问题2。我正在进行三种不同的查询以返回单个页面的数据。这是违反公约还是效率很低?人们通常是这样做的吗?(我不是故意在post文档中嵌入评论文档)


Q3(可选)。我决定以规范化的格式返回
帖子
评论
,这样前端就可以轻松创建状态树(Redux建议使用规范化的应用程序状态树)。这是个坏主意吗?

Q1:你把一堆不同的东西混合在一起,制成一种邪恶的混合物。帖子和评论是一个数组,但页面不是。
Object.assign(…)
获取这些东西的所有属性,并将它们放在目标对象上

您将需要以下内容:

Object.assign({}, page.toObject, {
  posts: posts.map(p => p.toObject()),
  comments: comments.map(c => c.toObject())
});
问题2:Mongo是一个文档库,可以进行3次查询。也就是说,您可以将评论存储在post文档中,并且每个post只需要1个查询。非规范化是文档/k/v/对象存储的规范


问题3:不,没关系。使用
normalizer
的Redux更喜欢它。这就是说,Redux哲学规定,你必须始终做你认为最好的事情。

Q1:你在混合一堆不同的东西来制作邪恶的混合物。帖子和评论是一个数组,但页面不是。
Object.assign(…)
获取这些东西的所有属性,并将它们放在目标对象上

您将需要以下内容:

Object.assign({}, page.toObject, {
  posts: posts.map(p => p.toObject()),
  comments: comments.map(c => c.toObject())
});
问题2:Mongo是一个文档库,可以进行3次查询。也就是说,您可以将评论存储在post文档中,并且每个post只需要1个查询。非规范化是文档/k/v/对象存储的规范

问题3:不,没关系。使用
normalizer
的Redux更喜欢它。也就是说,Redux的理念要求你必须始终做你认为最好的事情