javascript - 这是在 JS 中的依赖函数中使用 Try-Catch 和 async-wait 的正确方法吗

标签 javascript node.js async-await try-catch

这些是我的以下代码文件。

flamesHelper.js

import flames from "../model/flames";

async function count(query = {}) {
  try {
    return await flames.count(query).exec();
  } catch (error) {
    return new Error(error);
  }
}

flamesController.js

import flamesHelper from "../helpers/flamesHelper";
const flamePerPage = 100;

async function count(req, res) {
  try {
    const count = await flamesHelper.count();
    return res.status(200).send({ count, flamePerPage });
  } catch (error) {
    console.log(error);
    return res.status(500).send({ message: "Error while counting flames." });
  }
}

flames.js

import express from "express";
const router = express.Router();
import flamesController from "../controllers/flamesController";

router.get("/getCount", loginUtil.isLoggedIn, flamesController.count);

这是一个简单的 NodeJS 代码。我需要帮助来了解我的代码是否正确。 该代码工作正常,我得到了正确的计数。我可能会在整个项目中使用相同的结构。

但我的问题是。

如果在任何时候从flamesHelper.count发生任何错误,都将被flamesController.count方法捕获。 另外,如果你能告诉我这是使用 async-awaittry-catch 的正确方法,其中涉及 Mongodb 使用 mongoose.

感谢您的补充!

最佳答案

对于您打算做的事情(根据您的评论),您可以这样做:

function count(query = {}) {
    return flames.count(query).exec();
}

这只会返回 promise ,然后返回的 promise 将解决或拒绝。您所展示的简单代码无需使用 await

而且,根据您的问题,如果您希望错误仍然是被拒绝的 promise ,则必须 throw err 或返回 Promise.reject(err) return new Error(...) 会产生一个已解决的 promise ,其中错误对象作为已解决的值,这几乎不是您想要的。

关于javascript - 这是在 JS 中的依赖函数中使用 Try-Catch 和 async-wait 的正确方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57839193/

相关文章:

javascript - Node.js + 异步系列执行

node.js - 使用 Node + Jade + Express 渲染存储在 Mongo (GridFS) 中的图像

node.js - 我可以使用管理员身份验证 API 在 Firebase 中手动创建联合用户吗?

c# - C#中如何处理异步方法和IDisposable?

python - Python中oldstyle和newstyle协程的调用/返回协议(protocol)有什么区别?

javascript - 将.ics文件转换到webcal://,而不是通过浏览器下载

javascript - 服务在初始化后获取对象为空

javascript - 具有同步和异步代码的异步函数

javascript - 从 Controller 将参数传递给 Angular 服务?

javascript - 当 HTML5 音频元素播放了一定百分比时运行函数