React Leaflet:将对象从MongoDB获取到Leaflet映射作为标记(使用node.js和express)

海伦

我正在尝试从MongoDB中获取数据(使用node.js和express),并使用react leaflet将它们显示为Leaflet地图上的标记。但是,我总是收到一个错误:未处理的拒绝(TypeError):this.state.images.map不是一个函数我不确定为什么会收到此错误,因为控制台日志中的数据看起来不错。

我的服务器:

imageRouter.get((req, res, next) => {
    ImageEntry.find({})
        .then(images => {
            res.status(200).json({
                images,
            });
        })
        .catch(err => res.status(500).json(err));
});

我的客户(API.js):

    export async function getImages() {
    const response = await fetch(API_URL);
    return response.json();  
}

我的客户(App.js):

        state = {
         location: {
          lat: 63.430515,
          lng: 10.395053,
        },
        zoom: 5,
        images: [],
      }

componentDidMount() {
    getImages()
      .then(images => {
        this.setState({
          images
        });
      });
  }

render(){
    const position = [this.state.location.lat, this.state.location.lng];

    console.log(this.state.images);

    return (
      <div className="app">
        <Map className="map" center={position} zoom={this.state.zoom}>
          <TileLayer
            attribution='&copy; <a 
            href="http://osm.org/copyright">OpenStreetMap</a> 
            contributors'
            url="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png"
          />
          {
            this.state.images.map(image => (
              <Marker
                key={image._id}
                position={[image.latitude, image.longitude]}
                icon={imageIcon}>
                <Popup>
                  <p><em>{image.prosjekt}</em> {image.prosjektOmrade}</p>
                </Popup>
              </Marker>
            ))}
        </Map>
    );
  }

我尝试在渲染器中打印图像,以查看是否获得正确的结果。当我刷新页面时,该数组为空,但是在som ms之后,该数组内部有一些对象。它显示以下内容:

[]
 length: 0
 __proto__: Array(0)

som ms之后

{images: Array(4)}
    images: Array(4)
     0: {_id: "6026b6c272d2e50d47533055", prosjekt: "E6KAA", prosjektOmrade: "Holvegen", parsell: 1200, kategori: "VVS", …}
     1: {_id: "602804da7be224141e19b38d", prosjekt: "E6KAA", prosjektOmrade: "Holvegen", parsell: 1200, kategori: "VVS", …}
     2: {_id: "602ab78bbde3a7233bf9954e", prosjekt: "E6KAA", prosjektOmrade: "Bro", parsell: 233, kategori: "Bro", …}
     3: {_id: "602d31a9311aec0f1bef820f", prosjekt: "E6KAA", prosjektOmrade: "rundkjøring", parsell: 400, kategori: "Vei", …}
     length: 4
    __proto__: Array(0)
    __proto__: Object

我不知道为什么会出错,真的希望有人能帮助我。非常感谢,谢谢!

kboul
componentDidMount() {
    getImages()
      .then(images => {
        this.setState({
          images: images.images
        });
      });
  }

或通过破坏

 componentDidMount() {
        getImages()
          .then(({images}) => {
            this.setState({ images });
          });
      }

从评论:

  1. this.state.images在获取数据前几秒钟为空。尝试使用表达式this.state.images.length > 0 && this.state.images.map...以确保填充了数据数组
  2. 如果返回的数据模型是对象数组的数组,则仅通过make访问数据,images.images但是在不知道返回的数据的确切形式的情况下很难确切地说出来。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

React Leaflet:将对象从MongoDB获取到Leaflet映射作为标记(使用node.js和express)

来自分类Dev

使用React和Express

来自分类Dev

使用Node.js,Express,Mongoose和React将图像上传到MongoDB

来自分类Dev

Node和Express中的Rest API,与ejs和React.js一起使用

来自分类Dev

使用 React.js 和 Express.js POST 表单数据到服务器

来自分类Dev

具有express和react的Node.js,fs.readdir找不到文件

来自分类Dev

通过Webpack服务/监控的React UI和Node.js / Express应用程序

来自分类Dev

获取API在POSTMAN和Express服务器上工作,但在React js上不工作

来自分类Dev

使用react-router和express route.js有什么区别

来自分类Dev

使用OAuth,express和React.js的最佳实践是什么

来自分类Dev

Express JS和SocketIO使用

来自分类Dev

集成 React Native 和 Express JS Restful API

来自分类Dev

使用Leaflet Map的基本CSS定位和使用React.js的HTML表

来自分类Dev

Node.js Javascript和Express

来自分类Dev

Node.js / Express和并行队列

来自分类Dev

Node Express失败加载CSS和JS

来自分类Dev

Node.js和Express错误

来自分类Dev

Node.js Javascript和Express

来自分类Dev

使用express,Node.js和MongoDB附加数组

来自分类Dev

Redux React Express和Node如何克服CORS问题?

来自分类Dev

使用Express Handlebars和Angular JS

来自分类Dev

React-Leaflet-将绘图列表映射到标记

来自分类Dev

如何使用Express和React Router发送GET / POST请求?

来自分类Dev

结合使用Google oauth2.0和react,express应用

来自分类Dev

使用Express API和React前端防止CSRF

来自分类Dev

React-leaflet 不能使用 create-react-app 和 react 16.8.4

来自分类Dev

使用Node JS和Express JS的HTTPS请求缓慢?

来自分类Dev

使用Node JS和React js的文件加载问题

来自分类Dev

React.js导入和使用组件

Related 相关文章

  1. 1

    React Leaflet:将对象从MongoDB获取到Leaflet映射作为标记(使用node.js和express)

  2. 2

    使用React和Express

  3. 3

    使用Node.js,Express,Mongoose和React将图像上传到MongoDB

  4. 4

    Node和Express中的Rest API,与ejs和React.js一起使用

  5. 5

    使用 React.js 和 Express.js POST 表单数据到服务器

  6. 6

    具有express和react的Node.js,fs.readdir找不到文件

  7. 7

    通过Webpack服务/监控的React UI和Node.js / Express应用程序

  8. 8

    获取API在POSTMAN和Express服务器上工作,但在React js上不工作

  9. 9

    使用react-router和express route.js有什么区别

  10. 10

    使用OAuth,express和React.js的最佳实践是什么

  11. 11

    Express JS和SocketIO使用

  12. 12

    集成 React Native 和 Express JS Restful API

  13. 13

    使用Leaflet Map的基本CSS定位和使用React.js的HTML表

  14. 14

    Node.js Javascript和Express

  15. 15

    Node.js / Express和并行队列

  16. 16

    Node Express失败加载CSS和JS

  17. 17

    Node.js和Express错误

  18. 18

    Node.js Javascript和Express

  19. 19

    使用express,Node.js和MongoDB附加数组

  20. 20

    Redux React Express和Node如何克服CORS问题?

  21. 21

    使用Express Handlebars和Angular JS

  22. 22

    React-Leaflet-将绘图列表映射到标记

  23. 23

    如何使用Express和React Router发送GET / POST请求?

  24. 24

    结合使用Google oauth2.0和react,express应用

  25. 25

    使用Express API和React前端防止CSRF

  26. 26

    React-leaflet 不能使用 create-react-app 和 react 16.8.4

  27. 27

    使用Node JS和Express JS的HTTPS请求缓慢?

  28. 28

    使用Node JS和React js的文件加载问题

  29. 29

    React.js导入和使用组件

热门标签

归档