You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

因Mongoose.find()弃用回调,在app.get()中用异步匿名函数是否安全?

关于Express中异步路由处理函数的安全性问题

把Express路由的处理函数设为异步是完全安全的,Express原生就支持异步函数作为路由处理器,这也是当前Node.js后端开发里的常规写法。

不过你当前的代码存在冗余问题——await和.then()没必要同时使用,二选一即可,优化后的写法可以是下面两种:

写法一:纯async/await风格

app
  .route("/webclips")
  .get(async(req, res) => {
    const result = await Webclip.find({});
    res.send(result);
  })

写法二:纯Promise链式调用风格

app
  .route("/webclips")
  .get((req, res) => {
    Webclip.find({}).then((result) => res.send(result));
  })

另外需要注意:异步函数中如果抛出错误,Express不会自动捕获处理,可能导致请求挂起或者服务崩溃。所以建议加上错误处理逻辑,比如用try/catch包裹:

app
  .route("/webclips")
  .get(async(req, res) => {
    try {
      const result = await Webclip.find({});
      res.send(result);
    } catch (err) {
      res.status(500).send({ error: err.message });
    }
  })

你也可以配置Express的全局错误处理中间件,统一捕获所有路由的异步错误,避免每个路由都重复写try/catch。

内容的提问来源于stack exchange,提问作者vinshield

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 16:32:06