当前位置: 首页 > 面试题库 >

需要的建议:如何正确地将React连接到MongoDB

勾安翔
2023-03-14
问题内容

我一直在花一些时间来学习React,MongoDB和其他与JS
Web应用程序相关的工具。对于我创建的一个小型项目,我正在使用此存储库来创建我的玩具应用程序Create no App no
build
。在我开发应用程序的过程中,事后我学到了很多与React相关的工具和材料。

我停留的部分是我试图将联系表单的数据提交到MongoDB中,但是到目前为止,我无法将我的应用程序与MongoDB挂钩。

这是我的MongoDB代码。我已经将MongoDB指南中的代码复制并粘贴到了Web应用程序中并粘贴到了src/modules/mongo.js文件中

const MongoClient = require('mongodb').MongoClient;
const assert = require('assert');
const ObjectId = require('mongodb').ObjectID;
const url = 'mongodb://localhost:27017/danielrubio';

const insertFormData(db, callback) {
   db.collection('contactsubmissions').insertOne( {
      "name": name,
      "message": message,
      "email": email
    }, function(err, result) {
    assert.equal(err, null);
    console.log("Inserted a document into the restaurants collection.");
    callback();
  });
};

MongoClient.connect(url, function(err, db) {
  assert.equal(null, err);
  insertDocument(db, function() {
    db.close();
  });
})

上面的代码很简单,它基本上是将一个文档插入到集合中。

这是我的第二个文件 src/modules/contact.js

import React, { Component } from 'react';
import Formsy from 'formsy-react';
import { FormsyText } from 'formsy-material-ui/lib';
import Paper from 'material-ui/Paper';
import RaisedButton from 'material-ui/RaisedButton';
import Snackbar from 'material-ui/Snackbar';
import '../assets/css/style.css';

class ContactForm extends Component {
  constructor(props) {
    super(props);
    this.handleSubmit = this.handleSubmit.bind(this);
    this.state = { open: false };
  }

  handleSubmit(data) {
    db.insertDocument({
       form submission info
       db.close()
    })
  }

  ......more code.....

  }

到目前为止,我已经能够通过MongoDB指南进行工作,创建数据库,可以访问控制台,并且可以通过控制台插入数据。我还没有弄清楚如何将我的应用程序连接到mongodb,因此当我单击“提交”按钮时,它将在正确的数据库中插入文档。来自Rails并使用了一点Flask,通常可以调用一个.create连接到数据库的方法,或者执行某种SQL
Alchemy操作来打开和关闭数据库。我尝试通过将两个文件合并在一起来尝试这种方法,但是当我这样做时,我什至无法运行,npm start否则会出现以下类型的错误:

Error in ./~/mongodb/lib/gridfs/grid_store.js
Module not found: Error: Cannot resolve module 'fs' in /Users/drubio/Desktop/react_personal_website/node_modules/mongodb/lib/gridfs
 @ ./~/mongodb/lib/gridfs/grid_store.js 42:7-20

Error in ./~/mongodb-core/lib/connection/connection.js
Module not found: Error: Cannot resolve module 'net' in /Users/drubio/Desktop/react_personal_website/node_modules/mongodb-core/lib/connection
 @ ./~/mongodb-core/lib/connection/connection.js 5:10-24

Error in ./~/mongodb-core/lib/connection/connection.js
Module not found: Error: Cannot resolve module 'tls' in /Users/drubio/Desktop/react_personal_website/node_modules/mongodb-core/lib/connection
 @ ./~/mongodb-core/lib/connection/connection.js 6:10-24

因此,我的问题是如何简单地连接我的应用程序以打开mongodb数据库并对其进行写入?我一直在阅读了很多教程,但然后我得到兔子躲在糊涂进一步谈到ExpressMongooseFlux和和。从高层次的概述来看,我似乎甚至不需要Express或Mongoose,我只是想插入没有模式的数据,并且说实话,我并没有真正了解Flux,但是从我的收集中我我的小型应用程序真的不需要它(我认为)。我可以在正确的方向上使用一点微调。谢谢。

  [1]: https://github.com/facebookincubator/create-react-app

问题答案:

您必须创建终结点(服务器端),Node可以是php之类的东西,在那里您将接受请求并将数据插入到数据库中。您的React应用程序将对服务器进行ajax调用,并且服务器会将数据放入数据库中

如果要使用Express做到这一点,则可以使用一种路由创建简单的Express应用,该路由将从客户端获取数据并将其发送到MongoDB。您不必使用Mongoose,您可以使用MongoDB驱动程序或外部驱动程序,只需将数据发送到MongoDB。



 类似资料:
  • 问题内容: 例如,我有实体类: 接下来,我添加新的实体类: 接下来,我可以添加越来越多的实体类。 而且,此刻我想:我可以/必须以逻辑结构绑定/连接我的实体类,还是没有? 我的意思是说?我尝试解释一下: 要点1:所有这些类:,以及其他- 。 想法1:需要通过接口或抽象类对此类进行逻辑绑定。 第2点:我看到,所有实体类都有相同的方法:和。 想法2:需要避免在所有类中声明此方法。 我的解决方案: 添加界

  • 问题内容: 我正在尝试找出在我的express.js路由之间传递mysql连接(使用node- mysql)的最佳方法。我正在动态添加每个路由(在路由中为每个文件循环使用),这意味着我不能只是将连接传递给需要它的路由。我要么需要将其传递到每条路线,要么根本不需要传递。我不喜欢将其传递给不需要它的想法,因此我创建了一个dbConnection.js,可以根据需要单独导入路由。问题是我认为我做的不正确

  • 我目前正在做一个小项目,我需要将kafka集群连接到mongodb,以便将发布到kafka主题的消息存储在mongodb数据库中。我目前有一个本地kafka集群,一个sping引导生产者向一个主题发布消息,一个spinger引导消费者在本地使用这些消息。我也在本地安装了mongob指南针……我一直在看教程,我发现我必须使用某种接收器连接器(mongob连接器)来做我想做的事情,但大多数示例都是基于

  • 我使用来管理服务器端的套接字连接。如果服务器(tomcat)关闭,我如何确保任何活动的套接字连接被正确终止? 有好心的听众吗?或任何可以防止服务器关闭的拦截器,例如,如果在关闭期间有任何打开的套接字,则最多60秒;但同时关闭套接字,在关机期间不接受任何连接?

  • 问题内容: 我不时看到有关连接数据库的问题。 大多数答案不是我做的方式,否则我可能只是无法正确获得答案。无论如何; 我从未考虑过,因为我的工作方式对我有效。 但是这里有个疯狂的想法;也许我做错了所有,如果是这样的话;我真的很想知道如何使用PHP和PDO正确连接到MySQL数据库并使其易于访问。 这是我的做法: 首先,这是我的文件结构 (向下精简) : index.php 在最顶部,我有。 load

  • 我有一个场景,其中我得到一个String消息列表,我必须遍历String并调用另一个方法,这是一个长时间运行的过程。然后我必须收集这个长时间运行过程的结果并连接结果并将其发送回用户交互界面。我对Scala中的这些未来概念很陌生。我正在使用Play框架,其中字符串列表将来自用户交互界面。这是我第一次尝试实现ht场景的样子: 为简单起见,long RunningCall将只返回一个字符串。稍后我将把它