我正在处理一个使用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);
});
}
问题是products
产生了一个承诺,表示res.json
不会自动等待并转换为JSON响应。您需要等待承诺,然后发送响应。类似于:
router.get('/', async (req, res) => {
const products = await allProducts.plantProducts();
res.json(products);
});