javascript - 无法将 React 更新放入 MySQL 数据库

标签 javascript mysql node.js reactjs

我从 friend 那里得到了一个项目,该项目使用了 React.js、Node.js、Express.js 和 MySQL 技术。当我处理 CRUD 部分时,我只能更新输入,但无法更改数据库。

这是我的 React 代码:

import React, { Component } from "react";
import axios from "axios";
import { InputText } from "primereact/inputtext";
import { Button } from "primereact/button";

export class EditFK extends Component {
  constructor() {
    super();
    this.state = {
      id: "",
      nama: null,
      fakultas: []
    };
  }

  componentDidMount() {
    axios.get("http://localhost:3210/fakultas").then(getdata => {
      this.setState({
        fakultas: getdata.data
      });
    });
  }

  saveData() {
    axios
      .put(`http://localhost:3210/fakultas/edit/${this.params}`)
      .then(postdata => {
        this.setState({
          dataTableValue: postdata.data
        });
      });
  }

  render() {
    return (
      <div className="p-grid p-fluid">
        <div className="p-col-12 card card-w-title">
          <h1>Edit Fakultas</h1>
        </div>
        <div className="p-col-6">
          <div className="card card-w-title">
            <h4>Ubah Fakultas</h4>
            <div className="p-grid">
              <div className="p-col-12 p-md-6">
                <InputText placeholder="Nama" type="text" />
              </div>
            </div>
          </div>
        </div>
        <div className="p-col-12">
          <div className="p-col-3">
            <Button
              label="Update"
              icon="pi pi-pencil"
              onClick={this.saveData()}
            />
          </div>
        </div>
      </div>
    );
  }
}

这是我的后端代码:

//get fakultas by id
app.get("/fakultas/:id", (req, res) => {
  var sql = `SELECT * FROM fakultas WHERE id = ${req.params.id}`;
  db.query(sql, (err, result) => {
    if (err) {
      throw err;
    } else {
      res.send(result);
    }
  });
});

//edit fakultas by id
app.put("/fakultas/edit/:id", (req, res) => {
  console.log(req.body);
  var data = {
    id: req.body.id,
    nama: req.body.nama
  };
  var sql = `UPDATE fakultas set ? WHERE id = ${req.params.id}`;
  db.query(sql, data, (err, result) => {
    if (err) {
      throw err;
    } else {
      res.send({
        status: `Data Berhasil di Update`,
        id: req.body.id,
        nama: req.body.nama
      });
    }
  });
});

下面的链接是 fakultas 表中的列:

fakultas table column screenshot

最佳答案

我确实了解有关 sql 查询的基础知识,但我认为您应该将问号替换为您要设置的列的名称:

  var sql = `UPDATE fakultas set columnName = newValue WHERE id = ${req.params.id}`;

另外:我为你找到了this,我认为用户发布的代码就是你需要的

关于javascript - 无法将 React 更新放入 MySQL 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56752050/

相关文章:

javascript - Chrome应用程序缓存在离线时被删除

Javascript:是否有一种干净的方法来根据变量的值是否存在来访问对象属性?

mysql - 如果触发条件

android - 如何使用 google-play-purchase-validator 验证购买 express 服务器

javascript - mongodb 与 typescript `toArray` 方法不起作用

javascript - jQuery DOM 数组作为参数

javascript - 如何改变一个简单拼图的方向

mysql - mysql如何检索多列数据

mysql - 获取mysql中所有输出的单个值和总和

node.js - 添加快速 session 中间件会崩溃并显示 "ReferenceError: setImmediate is not defined"