res.json(),它在哪里响应?

时间:2018-07-31 20:57:58

标签: javascript node.js mongodb rest mongoose

我是路由部分的新手,请尝试了解这段代码(特别是res.json)的作用

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

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

与POST路由相同,当我们尝试使用create()创建新的Todo时,我们再次使用res.json(),在这里我们尝试将信息发布到服务器,所以为什么在这里使用res? / p>

4 个答案:

答案 0 :(得分:1)

  

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' });

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

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

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

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

答案 1 :(得分:0)

res.json()将被发送到前端

就您而言,

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

这将发送一个从数据库返回的data (todos)

答案 2 :(得分:-2)

express docs可以帮助解决这个问题,但是简而言之,res.json使用提供的JSON,对其进行字符串化,然后将其发送到客户端(您的浏览器或发出Web请求的任何内容)< / p>

答案 3 :(得分:-2)

res.body 将不包含来自前端的信息。

来自前面的信息位于 req 对象中(req =>请求,res =响应)。

FrontEnd如前所述要求一些数据/操作,所有来自FrontEnd的数据都在 req 对象中,继续操作后,您需要返回响应( res )放在您的前面。

对于 POST ,如果服务器必须在数据库中执行操作,它将执行此操作,然后使用res.send()方法通知客户端

如果您对POST和GET感到困惑,那么您似乎对REST API并不熟悉。让我在这里写下该标准的简要概述:

  • http 获取以获取数据(从数据库或其他来源)
  • http POST 创建一个新条目
  • http PUT 以更新现有数据
  • http 删除以删除条目

如果需要更多详细信息,请查看wikipedia