提问者:小点点

node.js-Http get不会在Postman或browser中显示来自MongoDb查询的数据


我正在处理一个使用MongoDb数据库的Node.js后端项目。在我查询数据库并收到数据后,它将不会使用res.send()在浏览器中显示数据。我还尝试了res.json()。然而,数据显示在我的控制台,但只是不会显示在邮差或我的浏览器。来自mongoDB的查询数据不是json或数组吗?我读了一下,上面写着它是一个指向数据的光标。这个数据不能被转换为在broswer中显示吗?

mycode以及控制台和浏览器显示

ProductRouter.js

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

常量产品=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

async函数plantProducts(){

尝试{

const products = await getProducts();

return products;

}catch(err){

let code = "400";

return code; 

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

}

}

植物产品();

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

函数getProducts(){

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

    const products = Product

    .find()

    resolve(products);

});    

}


共1个答案

匿名用户

问题是products产生了一个承诺,表示res.json不会自动等待并转换为JSON响应。您需要等待承诺,然后发送响应。类似于:

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