首页 > 解决方案 > res.json(),它在哪里响应?

问题描述

我是路由部分的新手,并尝试了解这段代码发生了什么,特别是 res.json

router.get('/', function(req, res){
  db.find()
  .then(function(todos){
    res.json(todos);
  }
})

我需要知道这个 res.json 在哪里响应,是在他们需要时响应前端还是用于数据库部分?当我们尝试使用 find() 从数据库中查找所有信息,然后将其转换为 json 时,它会去哪里?

当我们尝试使用 create() 创建新的 Todo 时,POST 路由也是如此,我们再次使用 res.json(),这里我们尝试将信息发布到服务器,那么为什么我们在这里使用 res?

标签: javascriptnode.jsmongodbrestmongoose

解决方案


res.json([body])发送 JSON 响应。此方法发送一个响应(具有正确的内容类型),该响应是使用 JSON.stringify() 转换为 JSON 字符串的参数。

该参数可以是任何 JSON 类型,包括对象、数组、字符串、布尔值或数字,您还可以使用它将其他值转换为 JSON,例如 null 和 undefined(尽管这些在技术上不是有效的 JSON)。

res.json(null);
res.json({ user: 'tobi' });
res.status(500).json({ error: 'message' });

来源: 来自 expressjs.com 的 res.json([body]) API

根据您的问题,这对前端开发人员很有帮助,因为响应来自 GET 请求的 JSON 对象。

请注意,create() 方法中的 res.json 用于将新创建的 todo 作为 JSON 返回,以简化前端开发人员的工作。

在高级主题中,您将面临模式验证,它验证来自 POST 请求的发布数据,但该数据应该是 JSON,以便能够使用模型模式对其进行验证。


推荐阅读