【问题标题】:ReactJS error when I POST to my newest MySQL table当我发布到我最新的 MySQL 表时出现 ReactJS 错误
【发布时间】:2021-01-24 20:11:51
【问题描述】:

我的 Mysql 数据库中有两个表。当我只有一张桌子时,一切都很完美。我创建了一个新表,当我运行命令“node serve.js”时它可以工作并且没有错误。

新表用于管理登录用户的信息。当我按下提交按钮时,在“UserInfo.js”文件中编译表单后遇到错误。

在 Postman 上我得到错误,如果我输入 localhost:8080/api/users 我得到“Cannot GET /api/users 我的用户控制器:

const users = require("../controllers/user.controller.js");

  var router = require("express").Router();

  // Create a new Tutorial
  router.post("/users", users.create);

  // Retrieve all Tutorials
  router.get("/users", users.findAll);


  // Retrieve a single Tutorial with id
  router.get("/users/:id", users.findOne);

  // Update a Tutorial with id
  router.put("/users/:id", users.update);

  // Delete a Tutorial with id
  router.delete("/users/:id", users.delete);


  app.use('/api/users', router); 
};

和我的模型 index.js:

const dbConfig = require("../config/db.config.js");

const Sequelize = require("sequelize");
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
  host: dbConfig.HOST,
  dialect: dbConfig.dialect,
  operatorsAliases: false,

  pool: {
    max: dbConfig.pool.max,
    min: dbConfig.pool.min,
    acquire: dbConfig.pool.acquire,
    idle: dbConfig.pool.idle
  }
});

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

db.tutorials = require("./tutorial.model.js")(sequelize, Sequelize);



module.exports = db;

我已经阅读了类似问题的答案,并搜索了 stackoverflow 之外的各种教程。 我正在学习并在不到 2 个月前开始,所以不要告诉我谷歌,因为我自己无法解决。 感谢您的帮助。

已解决。新控制器:

const users = require("../controllers/user.controller.js");

  var router = require("express").Router();

  // Create a new Tutorial
  router.post("/", users.create);

  // Retrieve all Tutorials
  router.get("/", users.findAll);


  // Retrieve a single Tutorial with id
  router.get("/:id", users.findOne);

  // Update a Tutorial with id
  router.put("/:id", users.update);

  // Delete a Tutorial with id
  router.delete("/:id", users.delete);


  app.use('/api/users', router); 
};

新模型 index.js:

const dbConfig = require("../config/db.config.js");

const Sequelize = require("sequelize");
const sequelize = new Sequelize(dbConfig.DB, dbConfig.USER, dbConfig.PASSWORD, {
  host: dbConfig.HOST,
  dialect: dbConfig.dialect,
  operatorsAliases: false,

  pool: {
    max: dbConfig.pool.max,
    min: dbConfig.pool.min,
    acquire: dbConfig.pool.acquire,
    idle: dbConfig.pool.idle
  }
});

const db = {};

db.Sequelize = Sequelize;
db.sequelize = sequelize;

db.tutorials = require("./tutorial.model.js")(sequelize, Sequelize);
db.users= require("./user.model.js")(sequelize, Sequelize)


module.exports = db;

【问题讨论】:

  • 你能贴出路线的代码吗?您的屏幕截图中的错误是 404 not found
  • @azium 所有东西都已经在代码沙箱里了,还是我不明白?

标签: mysql node.js reactjs express sequelize.js


【解决方案1】:

我调查了后端源,但发现您误解了如何定义路由。

 const users = require("../controllers/user.controller.js");

  var router = require("express").Router();

  // Create a new Tutorial
  router.post("/users", users.create);

  // Retrieve all Tutorials
  router.get("/users", users.findAll);


  // Retrieve a single Tutorial with id
  router.get("/users/:id", users.findOne);

  // Update a Tutorial with id
  router.put("/users/:id", users.update);

  // Delete a Tutorial with id
  router.delete("/users/:id", users.delete);


  app.use('/api/users', router); 
};

这是您定义的后端源,但您正在使用 app.use 定义路由,因此您可以像这样通过 /api/users/[sub-url] 调用端点

端点:localhost:8080/api/users/users 方法:POST

如果你想使用像 localhost:8080/api/users 这样的端点,那么你应该像这样定义后端路由。

const users = require("../controllers/user.controller.js");

  var router = require("express").Router();

  // Create a new Tutorial
  router.post("/", users.create);

  // Retrieve all Tutorials
  router.get("/", users.findAll);


  // Retrieve a single Tutorial with id
  router.get("/:id", users.findOne);

  // Update a Tutorial with id
  router.put("/:id", users.update);

  // Delete a Tutorial with id
  router.delete("/:id", users.delete);


  app.use('/api/users', router); 
};

我希望这对您有所帮助。 问候。

【讨论】:

  • 是的,使用 Postman 我得到错误,如果我输入 localhost:8080/api/users 我得到“Cannot GET /api/users”。由于信息的类型以及要填写的表格是相同的,我使用了相同的代码。我不明白为什么它适用于教程和用户信息它不。
  • 端点位于 url localhost.8080/api/users。我不明白如何分享它......或者我不明白这个问题。
  • 你在 8080 上运行了后端服务器吗?
  • 我更改了答案,您可以查看它。如果您对我的回答有任何疑问,请告诉我。
  • 你应该添加 db.users= require("./users.model.js")(sequelize, Sequelize);在 model/index.js 教程模型定义之后
猜你喜欢
  • 2021-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-23
  • 2021-04-03
  • 2016-01-18
  • 1970-01-01
  • 2019-09-11
相关资源
最近更新 更多