Node.js-Http get将不会在Postman或浏览器中显示来自MongoDb查询的数据

问题描述

我正在开发一个使用MongoDb数据库的node.js后端项目。在查询数据库并接收到数据后,它将不会使用res.send()在浏览器中显示数据。我也尝试过res.json()。但是,数据确实显示在我的控制台上,但不会显示在邮递员或我的浏览器中。来自mongoDB的查询数据不是json还是数组?我做了一点阅读,它指出它是一个指向数据的光标。可以将这些数据转换为不能在浏览器中显示吗?

mycode as well as console and browser display

ProductRouter.js

router.get('/',(req,res)=> {

const products = allProducts.plantProducts();

setTimeout(()=> {

    if (products === "400") {

        res.status("400").send("Error querying database");

    }else{

      console.log(products);

      res.status("200").send(products);

    }

},1000);

ProductController.js

异步函数plantProducts(){

尝试{

const products = await getProducts();

return products;

} catch(err){

let code = "400";

return code; 

//res.status('400').send(err.message);

}

}

plantProducts();

//在mongodb中搜索所有产品。

function getProducts(){

return new Promise((resolve,reject) => {

    const products = Product

    .find()

    resolve(products);

});    

}

解决方法

问题是products产生了一个表示'res.json的诺言,该诺言不会自动等待并转换为json-response。您需要等待承诺,然后发送响应。像这样:

router.get('/',async (req,res) => {
    const products = await allProducts.plantProducts();
    res.json(products);
});

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...