我是路由部分的新手,请尝试了解这段代码(特别是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>
答案 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并不熟悉。让我在这里写下该标准的简要概述:
如果需要更多详细信息,请查看wikipedia。