这些是我的以下代码文件。
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-await
和 try-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/