查询数据库和请求端点有啥区别?
Posted
技术标签:
【中文标题】查询数据库和请求端点有啥区别?【英文标题】:What is the difference between querying a database and requesting an endpoint?查询数据库和请求端点有什么区别? 【发布时间】:2021-06-23 03:21:46 【问题描述】:最近我正在尝试学习猫鼬,但我遇到了一个代码,这让我很困惑。
为什么我们在查询数据库时在回调函数的开头写 async 关键字?是不是因为回调函数就已经异步了?
router.get('/', async (req, res) =>
try
const subscriber = await Subscriber.find()
catch (error)
res.status(500).json(msg: error.message)
)
即使是这样做的方式,我们为什么不也遵循相同的模式,在这个基本的路由处理中将 async 关键字放在回调函数的开头?
router.get('/', (req, res) => res.send('Hello from homepage'))
【问题讨论】:
【参考方案1】:你必须在回调的开头写async
关键字,因为里面有await
关键字。 Async/await 是一项功能,可让您将同步函数转换为异步函数(不仅 javascript 有这种结构,其他编程语言也有)。 Async/await 是 Promise 之上的语法糖,使异步代码更易于编写和阅读。你可以找到详尽的解释here。
【讨论】:
没关系,但我不明白为什么我们不对第二个例子做同样的事情。最后,服务器接受请求并返回响应。 第二个示例中的回调不包含异步代码,因此没有理由使此代码异步。相反,对服务器的请求是异步的,因此您应该在客户端代码中输入如下内容:async doServerRequest() await axios.get("/")
如果您不等待服务器请求,您的客户端代码不会等待服务器响应,而是会继续执行方法以上是关于查询数据库和请求端点有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章
使用 JProfiler 分析 Java mongodb 查询,“检索数据”和“查询”有啥区别