我在尝试将我的 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 连接到数据库的简单方法。我在这部分最挣扎。我的方法是否存在某种明显的问题?更好的是,如果有人可以向我指出一个突出显示明确示例的存储库,那将非常有帮助。