node.js - Mongodb nodejs驱动程序不返回JSON数据
问题描述
我被困在我的 GET Route 端点上,将一个 JSON 数据数组从 MongoDB 返回到我的 localhost:5000 服务器,因此我可以为我的前端检索它 axios。到目前为止,我的代码只有控制台在 Visual Studio Code 的服务器终端上使用我需要的前端数据注销文档
这是 GET 路由的服务器代码
app.get('/pets', function(req, res){
const resultArray = [];
client.connect(err => {
assert.equal(null, err);
console.log("Connected successfully to server");
const db = client.db(dbName);
const cursor = db.collection('pet').find({});
iterateFunc = (doc,err) => {
assert.equal(null, err);
resultArray.push(doc);
console.log(JSON.stringify(doc, null, 4));
if(err) {
console.log(err)
}
}
cursor.forEach(iterateFunc);
client.close();
res.send({pets: resultArray});
});
这是获取路由的前端 Reactjs 代码
import React, {
Component
}
from 'react';
import axios from 'axios';
export default class ListPets extends Component {
constructor(props) {
super(props);
this.state = {
pets: [],
isLoaded: false,
}
}
componentDidMount = () => {
this.getPets();
};
getPets = async() => {
const res = await axios.get('http://localhost:5000/pets/');
const pets = res.data;
this.setState({
isLoaded: true,
pets: pets
});
console.log('Data has been received!');
console.log(pets.data)
return pets;
}
render() {
console.log('State: ', this.state);
const {
isLoaded,
} = this.state;
if (!isLoaded) {
return <div> Loading... </div>;
} else {
return (<div></div>);
}
}
}
解决方案
您的代码很好:问题出在您的数据库上。在此工作代码框的示例中,我将您的请求替换为对 https://jsonplaceholder.typicode.com/users的请求,并且效果很好。
推荐阅读
- python - python重试重试,禁用unittest
- python - Pytorch 中的批量学习是如何进行的?
- python - 通过 Python 的 jaydebeapi 批量插入 Oracle 数据库
- http - 有什么方法可以自定义 HTTP 响应状态?
- ios - 为什么使用 SwiftUI 不显示导航标题?
- elixir - 将 UUID 列表插入原始 SQL 查询(不能使用片段)
- angular - 为什么我不能在 Ionic 4 应用程序中使用 Lottie?
- c++ - 从文件读取时读取访问冲突
- azure - 如何使用 Azure PowerShell 获取 Azure 应用程序注册的创建日期?
- ios - 自动填充 Chrome 扩展程序如何工作?我可以在 iOS 应用程序中实现类似的东西吗?