在反应应用程序中与 mongodb 的简单连接

Posted

技术标签:

【中文标题】在反应应用程序中与 mongodb 的简单连接【英文标题】:Simple connection to mongodb in react app 【发布时间】:2018-09-15 17:15:04 【问题描述】:

我使用“create-react-app”创建了简单的反应应用程序。这个应用程序包含表单、验证和引导程序。没有什么花哨的东西能像魅力一样发挥作用。

我还注册了 mongo 以获得一个免费集群,这样我就可以将一些数据发送到。所以我有这个网址:

mongodb+srv://matt:passwprd@cluster0-jlasm.mongodb.net/test

现在,我想做的就是将 JSON 数据从表单发送到 mongo,但我不知道如何。

当我按照教程安装 MongoDB、mongoose 或任何软件包并为未来的 CRUD 操作添加基本设置时:

var MongoClient = require('mongodb').MongoClient
  , assert = require('assert');

// Connection URL
var url = 'mongodb+srv://mattOsuch:brainhub123@cluster0-jlasm.mongodb.net/test';

// Use connect method to connect to the server
MongoClient.connect(url, function(err, db) 
  assert.equal(null, err);
  console.log("Connected successfully to server");

  db.close();
);

整个应用程序崩溃:

./node_modules/mongodb-core/lib/uri_parser.js
Module not found: Can't resolve 'dns' in 'C:\Users\Mateusz\Desktop\brainhub\node_modules\mongodb-core\lib'

我曾经在 php 中使用 jQuery 或 mysql_query 发送数据,但我无法克服这个问题。换句话说,我想实现这个视频中介绍的功能:https://www.youtube.com/watch?v=Jsqz5op4fH8 所以正如我所说,简单的数据更新。

我怀疑 react-scripts 服务器监听器与 mongo 有某种冲突,但我不确定。

请帮助我,因为我正在失去神经。

【问题讨论】:

一般来说,您希望在服务器端构建此类功能(数据库 CRUD),而您的 React 应用程序在客户端运行。您所做的是不安全,因为您将数据库凭据硬编码到客户端应用程序中,任何访问者都可以查看其源代码。 好评@niels + @NielsdeBruin,那么开发它的正确方法是什么?我至少需要一些提示,因为我的想法已经不多了。 @MateuszOsuch 这不应该在 React 中完成。您需要一个单独的服务器端应用程序/ API 来执行此操作。 React 会调用那个 API。 如果您的 React 应用程序是汽车内的仪表板,那么您是在问我如何构建引擎。构建后端有很多选择,但因为您已经在使用 javascript您可以搜索有关如何使用 Mongoose 构建 Node.js 应用程序的教程。它可以为您呈现 React 视图,或者您需要构建一个 API。不管怎样,这与简单地编写一个 React 应用程序完全不同,但这是正确的方法。 【参考方案1】:

您正在使用 node.js,因此启动服务器应用程序尝试使用快速路由这里是教程的链接https://zellwk.com/blog/crud-express-mongodb 或https://codeburst.io/hitchhikers-guide-to-back-end-development-with-examples-3f97c70e0073 或尝试进行谷歌搜索(node.js mongodb 和 express)。

然后,当从服务器返回请求时,发送所需的数据,然后使用您的反应客户端处理接收到的数据

【讨论】:

【参考方案2】:

要在 javascript 中连接到 MongoDb,您必须使用 node.js 服务器。 因此,不可能将您的 React 应用程序直接连接到您的 MongoDb 集群。

更多信息,请访问官方MongoDb documentation

【讨论】:

【参考方案3】:

希望它有效!

handleSubmit()
let databody = 
    "name": this.state.name,
     // Remaining form Data


return fetch('mongodb+srv://mattOsuch:brainhub123@cluster0-jlasm.mongodb.net/test', 
    method: 'POST',
    body: JSON.stringify(databody),
    headers: 
        'Content-Type': 'application/json'
    ,
)
.then(res => res.json())
.then(data => console.log(data)); 


render()
return (
    <div>
        <form onSubmit=this.handleSubmit>
               // Form Fields
            <input type="submit" value="Save" />
        </form> 
    </div>
);
 

【讨论】:

【参考方案4】:

    首先您需要在前端创建一个 React.js,然后在后端 Web 应用程序上创建一个 node.js。

    然后,您需要将您的 mongodb 集合连接到您的 Node.js 服务器。

    然后您可以将表单数据发送到您的 node.js 服务器,您的 node.js 服务器会将您的表单数据发送到您的 mongodb 集合。

如果您不了解 NodeJS,则制作全栈 React-NodeJS-MongoDB Web 应用程序可能会有些挑战。因此,您可能首先从 EJS-NodeJS-MongoDB Web 应用程序开始。但无论如何,这里是您问题的链接: https://www.youtube.com/watch?v=3isCTSUdXaQ&t=2248s https://www.youtube.com/watch?v=Oa0pMn0tvU4&t=1316s

【讨论】:

以上是关于在反应应用程序中与 mongodb 的简单连接的主要内容,如果未能解决你的问题,请参考以下文章

Reactjs 和 Mongodb 的连接

在 java 中与 MS Access 数据库建立 SQL 连接时找不到合适的驱动程序

Rails 在应用程序 ubuntu 中与 Postgresql 数据库连接

无法在 PHP 中与 fsockopen 连接(连接超时)

如何使用 api 在服务器端呈现反应?

mongodb 的简单应用