问题描述
我正在开发一个使用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);
});