如何才能正确的将这个表单数据提交到MongoDB呢?

2024-04-01

我在尝试将我的 React 应用程序与 mongodb 数据库连接起来时遇到了非常困难的时间。在我之前提出的关于如何做的建议的问题中连接 React 和 MongoDB https://stackoverflow.com/questions/40725411/advice-needed-how-to-properly-connect-react-to-mongodb/40727391?noredirect=1#comment68703765_40727391,我受到了正确方向的推动。我一直在尝试遵循 YouTube 上这个出色的教程使用 Node 和 Express 的 MongoDB 教程 https://www.youtube.com/watch?v=ZKwrOXl5TDI。然而,存在一些关键差异,导致提交表单信息变得非常困难。例如,以下是 YouTube 视频中的一段代码:

index.html

<form action='/insert' method='post>
   <div> Input field one</div>
   <div> Input field two </div>
   ..........code.......
   <button type="submit">Insert</button>
</form>

然后在他的routes/index.js他有这个代码:

var express = require('express');
var router = express.Router();
var mongo = require('mongodb').MongoClient
var assert = require('assert')
var mongoUrl = 'mongodb::localhost...........'

router.post('/insert', function(req, res, next) {
  let formInput = {
     *form input hash with datan*
   }

   mongo.connect(url, function(err, db) {
    ........code to insert data into mongo......
   }
}

如果需要,我可以在上面的示例中更深入地了解确切的代码,但我认为它非常简单。本质上,这个人正在使用 Express 连接到数据库,并从他的表单中捕获数据,然后将其插入到他的数据库中。

这是我的问题,youtube 视频没有使用 React,而且它没有使用我正在使用的东西创建 React 应用程序 https://github.com/facebookincubator/create-react-app其次,youtube 视频中的表单使用表单 html 元素,而我的联系表单完全使用 React 和名为 Formsy 和 Formsy Material ui 的工具制作。 Formsy 属性的链接显示没有action or method财产Formsy 处理程序 https://github.com/christianalfoni/formsy-react/blob/master/API.md。下面是我的代码片段:

src/modules/mongo.js

const express = require('express');
const router = express.Router();
const mongodb = require('mongodb').MongoClient;
const assert = require('assert');
const mongoUrl = 'mongodb://localhost.......';

router.post('/insert', function(req, res, next) {
  let contactMessage = {
    name: req.body.name,
    email: req.body.email,
    message: req.body.message
  };

  mongodb.connect(url, function(err, db) {
    assert.equal(null, err);
    db.collection('message_submissions').insertOne(contactMessage, function(err, result) {
      assert.equal(null, err);
      console.log('message inserted');
      db.close();
  });
}

联系表格在src/modules/contact.js

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

  handleSubmit(data) {
    console.log(data)

    ================PROBLEM==============
    How am I supposed to insert data to mongo db here?
    =====================================
  }

  ...........code.......

  render() {
    return(
      <div>
        <Paper className="Form" zDepth={2}>
          <Formsy.Form onSubmit={this.handleSubmit} action='/insert' method='post'
            <FormsyText
               required
               name="name"
               floatingLabelText="Enter your name"
            />

            .......more input.....
            .......more input.....

          </Formsy.Form>
        </Paper>
      </div>
    );
  }

我该如何将 Formsy 表单插入到 mongodb 中?当我尝试导出我的router.post作为一个变量,例如const mongo =router.post(....` 我收到非常奇怪的错误。

更糟糕的是,许多教程没有针对这个问题提供单一的方法。例如,这里是我用来解决客户端/服务器问题的教程列表。这些都不相同,其中一些涉及从 API 获取数据,这不是我想要的。

  • Scotch.IO 初学者的客户端服务器问题 https://scotch.io/tutorials/react-on-the-server-for-beginners-build-a-universal-react-and-node-app
  • React Router 第 13 课 https://github.com/reactjs/react-router-tutorial
  • FullStack React 使用服务器 https://www.fullstackreact.com/articles/using-create-react-app-with-a-server/

我真的希望有一种像 Flask 那样用 React 连接到数据库的简单方法。我在这部分最挣扎。我的方法是否存在某种明显的问题?更好的是,如果有人可以向我指出一个突出显示明确示例的存储库,那将非常有帮助。


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何才能正确的将这个表单数据提交到MongoDB呢? 的相关文章

  • 具有 Firebase (FCM) 推送通知的 Node js

    我正在使用 Node js 开发 REST api 并且有一个休息端点来发送 firebase 推送通知 我的代码如下 const bodyParser require body parser var cors require cors v
  • 检查 touchend 是否在拖动后出现

    我有一些代码可以更改表的类 在手机上 有时表格对于屏幕来说太宽 用户将拖动 滚动来查看内容 但是 当他们触摸并拖动表格时 每次拖动都会触发 touchend 如何测试触摸端是否是触摸拖动的结果 我尝试跟踪dragstart和dragend
  • jquery window.open 在 ajax 成功中被阻止

    尝试在我的 ajax 成功调用中打开一个新的浏览器窗口 但是 它被阻止为弹出窗口 我做了一些搜索 发现用户事件需要绑定到 window open 才能避免这种情况发生 我还找到了这个解决方案 您可以在 ajax 之前打开一个空白窗口 然后在
  • React Native:加载图像后应用程序性能不佳

    加载图像似乎没有问题 但是加载完毕后就出现问题了 在我的应用程序中 我在整个游戏中一张一张地加载卡片图像 一旦我加载了 40 张卡片图像 整个应用程序就会变得很慢 它总是发生在第 40 个图像处 当我在第 40 个图像之后继续加载更多卡片图
  • 如何在React中的Material-UI选择框中设置默认值?

    我在用选择框 https material ui com demos selects 来自材料用户界面 我想显示默认选择的 选择值 选项 但之后用户无法选择此选项
  • HTML2canvas 和 Canvas2image,下载的屏幕截图不显示我的 HTML 图像

    我一直在开发一个 HTML 页面 我想将其转换为图像 我一直在使用 html2canvas 和 canvas2image 脚本并采用此代码http jsfiddle net 8ypxW 3 http jsfiddle net 8ypxW 3
  • Javascript - 将值从下拉框传递到 Google Maps API

    我正在使用 Google 地图 API 为一家出租车公司创建报价表 目前 用户在 2 个文本框中输入出发点和接载点 API 会计算两点之间的距离以及行程费用 我正在尝试添加两个具有设定位置的下拉框 以便用户可以选择这些位置之一或使用文本框输
  • 如何流式传输 OpenAI 的完成 API?

    我想流式传输结果通过 OpenAI 的 API 完成 https beta openai com docs api reference completions 该文档提到使用服务器发送的事件 https developer mozilla
  • Mongoose 和 Promise:如何获取查询结果数组?

    使用猫鼬从数据库和 Q 中查询结果以获取承诺 但发现很难只获取可用用户列表 目前我有一些这样的东西 var checkForPerson function person people mongoose model Person Person
  • 如何使JavaScript函数在Eclipse“大纲视图”中可见?

    我有这样的代码 但如果它在匿名函数中定义 则无法打开函数大纲 类没有问题 我该如何概述something2 请分享一些提示 我可以将所有函数标记为构造函数 但这是无效的方法 start of track event required deb
  • JS用正则表达式替换数字

    我有元素的标识符 如下所示 form book 1 2 3 我想要的是用其他值替换该标识符中的第二个数字 我将函数 match 与以下正则表达式一起使用 var regexp d d d 但它返回我包含的数组 1 2 3 2 因此 当我尝试
  • 将 javascript 整数转换为字节数组并返回

    function intFromBytes x var val 0 for var i 0 i lt x length i val x i if i lt x length 1 val val lt lt 8 return val func
  • Chartjs刻度标签位置

    尝试让 Y 轴刻度标签看起来像image https i stack imgur com XgoxX png 位于秤顶部且不旋转 缩放选项当前如下所示 scales yAxes id temp scaleLabel display true
  • 查询为空 Node Js Sequelize

    我正在尝试更新 Node js 应用程序中的数据 我和邮递员测试过 我的开发步骤是 从数据库 MySQL 获取ID为10的数据进行更新 gt gt 未处理的拒绝SequelizeDatabaseError 查询为空 我认识到 我使用了错误的
  • 如何将函数内的捕获错误传递给父级

    我有这几行代码示例 想知道下面的逻辑到底如何 try var response child console log why here catch err console log should show this err function c
  • Redux-saga 从操作中获取数据返回patternOrChannel 未定义

    我需要将动态数据从屏幕发送到操作 减速器 并使用该数据从 API 获取数据 但是当我在我的rootSaga我会收到这样的错误 在检查 take patternOrChannel 时未捕获 patternOrChannel 未定义未捕获在 r
  • 在 Javascript 中减少/分组数组

    基于this https stackoverflow com a 40774906 3254598例如 我想以稍微不同的方式按对象进行分组 结果应该如下 key audi items make audi model r8 year 2012
  • 如何在 gulp.src 中使用基本正则表达式?

    我正在尝试选择两个文件gulp src highcharts js and highcharts src js 当然 我知道我可以使用数组表达式显式添加这两个表达式 但出于学习目的 我尝试为它们编写一个表达式 我读过可以使用简单的正则表达式
  • 单击列表时使用 bootstrap Dropdown 防止下拉菜单消失

    我正在使用使用引导下拉菜单 http twitter github com bootstrap javascript html dropdowns生成下拉菜单 我想防止点击菜单时菜单消失 我已经实现了以下代码 但它不起作用 知道如何修复它吗
  • 从 Azure 应用服务连接到 MongoDB Atlas 集群

    我在 Azure 上有一个 Web 应用程序 它连接到 Atlas cloud mongodb com 上托管的 MongoDB 集群 我想使用 Atlas 这样我就不必关心 MongoDb 配置 问题是我的集群连接超时 我必须在我的 mo

随机推荐

  • Jersey 1.6 和 Spring 3.0.5 使用 Maven

    我很难让 Jersey 与 Spring 3 0 5 一起工作 我发现很多人说他们能够让它发挥作用 但我运气不好 我总是得到 java lang NoSuchMethodError org springframework web conte
  • 如何使用CloudKit的CKShare创建共享?

    我正在研究新的CKShare苹果今年发布的 我对此有一些疑问 我试图关注 WWDC 的 CloudKit 中的新增功能 视频 但部分代码在 Xcode 中不再工作 我想做的是 用户输入他的姓名和电话 然后单击UIButton 将与特定的人分
  • 与Linux中的内存映射设备通信

    我有一个内存映射设备 我需要与它通信 我的老板告诉我可以通过 dev mem 我在网上查了一下 没有找到任何相关的内容 是否可以做到 或者我的老板错了 假设您拥有超级用户权限 任何帮助表示赞赏 你在地址处有一个内存映射设备MMIO ADDR
  • 如何检查文本视图中输入的拼写?

    我有一个 UITextview 用户在其中输入文本 之后 我将该文本作为字符串并将其显示在另一个文本视图中 并想要语法不正确的单词 怎么做 使用自 ios 3 2 起可用的 UITextChecker 类 苹果文档 http develop
  • 如何放大特定点(没有画布)?

    目标很简单 使用鼠标滚轮放大特定点 鼠标所在的位置 这意味着缩放后 鼠标将位于图片的大致相同位置 Purely illustrative I don t care if you use dolphins ducks or madonna f
  • 使用 $not 进行 MongoDB 地理空间查询

    我有一个在 MongoDB 中运行良好的基本地理空间查询 似乎应用 not 来获得补集应该很容易 但它对我不起作用 这是简单的用户错误吗 或者 MongoDB 在概念上不能处理这个查询吗 我在中找不到任何此类限制文档 http www mo
  • Spark中的cache()会改变RDD的状态还是创建一个新的RDD?

    这个问题是我之前问题的后续问题如果我在 Spark 中缓存同一个 RDD 两次会发生什么 https stackoverflow com questions 36195105 what happens if i cache the same
  • sed 匹配换行符中的模式

    这是我的输入
  • 有什么方法可以列出所有用户定义的 PostgreSQL 函数吗?

    PostgreSQL 提供命令 dv 来列出所有视图 是否有类似的方法来列出所有用户定义的函数或仅列出特定用户定义的函数 sf 要求您知道函数的名称 它将提供函数的定义 df 列出了所有函数 而且有很多 我想要一种方法来显示我定义的函数列表
  • FileUpload 在 Android WebView 中不起作用

    我知道这个问题在这里被问了很多次 但我刚刚开始 Android 开发 所以对应用这些解决方案感到困惑 我的代码 FileUpload 选项不起作用 它不是打开文件选择对话框 请帮我 public class MainActivity ext
  • 在 Ansible 的字典列表中搜索键 [重复]

    这个问题在这里已经有答案了 我有一个类似于以下内容的字典列表 subnets name subnet1 name34554 address 192 168 1 100 id id1 name subnet2 name67678 addr 1
  • 在 PhantomJS 中使用 Jasmine 测试 $interval

    看来我的interval永远不会被触发 我有一个指令 其中包含 interval我想测试一下 我删除了所有与指令相关的代码 并将这段代码添加到其控制器中 window called 0 window interval interval fu
  • 如果 Select 元素没有标签,如何使其可访问?

    我正在学习 HTML 中的可访问性 我遇到了一个选择下拉 HTML 元素的示例 该元素旁边没有任何文本标签 仅页面上方标题的上下文可以让您了解该元素的含义元素包含例如例如 有关国家 地区的部分中的国家 地区列表 在其上运行辅助工具时 该工具
  • 修改联系信息

    我正在尝试插入和更新一条信息existing联系 因此我创建了一个示例应用程序来开发该功能 我希望示例应用程序做的就是插入 或如果存在 更新联系人的电子邮件地址 我通过系统意图选择联系人 如下所示 startActivityForResul
  • 如果我在表格中包含标题,如何防止 kable 在最终文档中留下原始乳胶?

    我正在 Rmarkdown 特别是 bookdown 中写我的论文 并使用 knit 将其编译成 PDF 当我编织它时 除了表格和数字之外 一切都很完美 这些表格 用 kable 生成 看起来几乎完美 但包装如下 其中 table 是正确呈
  • 异步的 List.ForEach() 有什么意义吗?

    我遇到了这段代码 items ForEach async item gt doSomeStuff await mongoItems FindOneAndUpdateAsync mongoMumboJumbo await AddBlah Sq
  • 计算 Rails 中记录之间的平均天数

    鉴于我有一个Foo带标准 Rails 时间戳列的模型计算创建记录之间的平均天数最有效的方法是什么 The maximum and minimum模型的类方法将使用 SQL 聚合函数min and max 有效地找到极值 span secs
  • 删除正则表达式中的文字字符

    我有以下字符串 Qpipe name office1 E 我正在使用一个简化的正则表达式库 它不支持 Q and E 我尝试删除它们 s replaceAll Q replaceAll E 但是 我收到错误Caused by java ut
  • 我们可以在二维码中保存/存储多少数据/信息?

    我想使用这个脚本https github com jeromeetienne jquery qrcode https github com jeromeetienne jquery qrcode 或者有更好的解决方案吗 我喜欢做的是将一些小
  • 如何才能正确的将这个表单数据提交到MongoDB呢?

    我在尝试将我的 React 应用程序与 mongodb 数据库连接起来时遇到了非常困难的时间 在我之前提出的关于如何做的建议的问题中连接 React 和 MongoDB https stackoverflow com questions 4