javascript - 如何在expressjs路由器中使用Async/Await?

标签 javascript node.js express asynchronous mongoose

我一直在与有关 Async/Await 的问题作斗争,我对 Nodejs 还比较陌生。我有一个存储库,我直接连接到我的 mongodb 集合以检索一些数据,但是当我将 Controller 连接到该存储库时,我得到一个空响应。 请查看下面我的代码:-

SyncRepository.js

const mongoose = require('mongoose');

exports.ItemRepo = async (limit) => {
  try {
     await mongoose.connection.db.collection('items_1087342')
        .find({}, {timeout: false}).limit(limit).toArray((err, results) => {
            // results.forEach(e => {
            //     console.log(e.item_id);
            // }); //This works well
            return results;
        });
 } catch (e) {
    throw Error('Error Loading Data:- ' + e.message);
 }
};

SyncController.js

const syncRepo = require('../../../Repositories/Sync/SyncRepository');

exports.getItem = async (req, res) => {
  try {
     await syncRepo.ItemRepo(7)
        .then(element => {
            console.log(element);
           return res.json(element); //This return null
        });
    // return await res.json(await syncRepo.ItemRepo(7));
 } catch (e) {
    return res.status(400).json({ status: 400, message: e.message });
 }
};

最佳答案

您正在混合 async/await 和传统的 Promise 语法。试试这个:

SyncRepository.js

const mongoose = require('mongoose');

exports.ItemRepo = limit => {
     return mongoose.connection.db.collection('items_1087342')
        .find({}, {timeout: false})
        .limit(limit)
        .exec() // see @Enslev's explanation in the comments
};

SyncController.js

const syncRepo = require('../../../Repositories/Sync/SyncRepository');

exports.getItem = async (req, res) => {
  try {
     let element = await syncRepo.ItemRepo(7)
     return res.json(element);
 } catch (e) {
    return res.status(400).json({ status: 400, message: e.message });
 }
};

关于javascript - 如何在expressjs路由器中使用Async/Await?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60147783/

相关文章:

node.js - 如果有人在 Node js 应用程序中通过 multer 将扩展名从 exe 更改为 png,则不应允许文件上传

javascript - 当整个类运行时,Spock 非初始功能方法失败

javascript - Bacon.when 未按预期匹配流

node.js - Ubuntu,无法安装 zlib1g-dev

javascript - Import.meta.env 在生产构建 vitejs 上未定义

node.js - PM2 的高 HTTP 延迟

javascript - jQuery - 从 2 列表创建数组

javascript - 类型 'Document' 缺少类型中的以下属性

node.js - 无法连接到 API 资源

javascript - 为什么 Node.js 找不到我的文件