【问题标题】:React form doesn't update mongo databaseReact 表单不更新 mongo 数据库
【发布时间】:2015-08-13 00:25:18
【问题描述】:

我正在使用 React 和 Node.js 创建一个短篇小说/博客网站。我有一个节点路由可以将新故事发布到我的 mongo 数据库。该路由与 superagent-cli 一起创建一个新故事,并且它通过了所有测试,所以我知道问题不在于路由本身。

表单在页面上呈现得很好,但它不会将数据提交到数据库,无论您是按 Enter 还是单击。

表单组件如下所示:

'use strict';

var React = require('react');

module.exports = React.createClass({

  submitHandler: function (event) {
    event.preventDefault();

    var author = React.findDOMNode(this.refs.author).value.trim();
    var categories = React.findDOMNode(this.refs.categories).value.trim();
    var storyTitle = React.findDOMNode(this.refs.storyTitle).value.trim();
    var storyText = React.findDOMNode(this.refs.storyText).value.trim();

    this.props.submit({author: author, categories: categories, storyTitle: storyTitle, storyText: storyText});

  },

  render: function () {

    return(
      <form onSubmit={this.submitHandler}>
        <input type="checkbox" ref="categories" value="fiction">Fiction</input>
        <input type="checkbox" ref="categories" value="CreepyPasta">CreepyPasta</input>
        <input type="checkbox" ref="categories" value="Horror">Horror</input>
        <input type="checkbox" ref="categories" value="Monsters">Monsters</input>
        <br />
        <input ref="storyTitle" placeholder="Title" />
        <br />
        <input ref="author" placeholder="Author" />
        <br />
        <input ref="storyText" placeholder="Add your story here"/>
        <br />
        <input type="submit" value="Save Story"></input>
      </form>
      )
  }

});

这是表单的视图:

'use strict';

var React = require('react');
var StoryForm = require('../add-story-form.jsx');
var request = require('superagent');

module.exports = React.createClass({

  getInitialState: function () {
    return {title: 'Add Your Own Story'};
  },

  submit: function (storyObj) {
    request
    .post('/api/stories')
    .send(storyObj)
    .end(function (err, res) {
      if (err) {
        return console.log(err);
      }
    }.bind(this));
  },

  render: function () {
    return (
      <main>
        <h1>{this.state.title}</h1>
        <StoryForm submit={this.submit}/>
      </main>
      )
  }

});

最后,这是我的主要 React 客户端组件,用于处理我的 React 路由:

'use strict';

var React = require('react');
var Router = require('react-router-component');
var Locations = Router.Locations;
var Location = Router.Location;
var MainPage = require('./components/views/main-page.jsx');
var CategoryPage = require('./components/views/category-page.jsx');
var FormPage = require('./components/views/story-form-page.jsx');

var App = React.createClass({

  render: function () {
    return (
      <Locations hash>
        <Location path="/" handler={MainPage} />
        <Location path="/stories/:category" handler={CategoryPage} />
        <Location path="/addstory" handler={FormPage} />
      </Locations>
    )
  }
})

React.render(<App />, document.body)

如果更多信息有帮助,请告诉我。您可以在 my github repo 上查看此分支上的完整项目

【问题讨论】:

    标签: javascript node.js mongodb reactjs


    【解决方案1】:
     submit: function (storyObj) {
        request
        .post('/api/stories')
        .send(storyObj)
        .end(function (err, res) {
          if (err) {
            return console.log(err);
          }
        }.bind(this));
      },
    

    使用 jQuery ajax 解决这个问题可能很容易:

    submit: function (storyObj) {
        $.post('/api/stories',storyObj, function () {
            console.log('success')
        })
    },
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 2015-07-19
      • 2015-05-20
      • 1970-01-01
      • 1970-01-01
      • 2016-08-23
      • 1970-01-01
      相关资源
      最近更新 更多