【问题标题】:Learning React > Express > Node.js > Mysql database connection. Stuck with tutorial学习 React > Express > Node.js > Mysql 数据库连接。坚持教程
【发布时间】:2020-09-01 20:21:12
【问题描述】:

我正在学习 React,其中一个步骤是学习如何使用 Express 服务器和 Mysql 数据库连接到数据库。在遇到教程之前,我做得很好。正如我在 Stackoverflow 中阅读的许多地方一样,关于所有这些的教程假设学习者达到一定水平似乎是很常见的事情。这是其中一种情况。

与其把你的时间浪费在问题中并不重要的部分上,我只会询问我遇到困难的确切部分。我正在关注的教程如下: https://www.edureka.co/blog/node-js-mysql-tutorial/

一切都很顺利,直到我来到它说的部分: "输入下面的代码来定义所有需要的例程:

learnerAddOrEdit"

首先,您必须创建程序:

CREATE DEFINER=`root`@`localhost` PROCEDURE `learnerAddOrEdit`(
IN _learner_id INT,
IN _learner_name VARCHAR(45),
IN _learner_email VARCHAR(45),
IN _course_Id INT
)
BEGIN
IF _learner_id = 0 THEN
INSERT INTO learnerdetails(learner_name,learner_email,course_Id)
VALUES (_learner_name,_learner_email,_course_Id);
SET _learner_id = last_insert_id();
ELSE
UPDATE learnerdetails
SET
learner_name = _learner_name,
learner_email = _learner_email,
course_Id = _course_Id
WHERE learner_id = _learner_id;
END IF;
SELECT _learner_id AS 'learner_id';
END

一切顺利,并且它已创建。然后,您必须将代码添加到 Script.js:

//Router to INSERT/POST a learner's detail
app.post('/learners', (req, res) => {
let learner = req.body;
var sql = "SET @learner_id = ?;SET @learner_name = ?;SET @learner_email = ?;SET @course_Id = ?; 
CALL learnerAddOrEdit(@learner_id,@learner_name,@learner_email,@course_Id);";
mysqlConnection.query(sql, [learner.learner_id, learner.learner_name, learner.learner_email, learner.course_Id], (err, rows, fields) => {
if (!err)
rows.forEach(element => {
if(element.constructor == Array)
res.send('New Learner ID : '+ element[0].learner_id);
});
else
console.log(err);
})
});

这也很顺利。然后它要求您在 Postman 中发布请求(抱歉,他们只在此处提供图片):

1]:https://i.stack.imgur.com/1S4Nb.png

这就是我卡住的地方。我按照上面示例图像所示的相同方式进行操作,但我遗漏了一些东西。我的请求如下所示:

Picture of my request

我错过了什么?我看到教程示例以某种方式插入了“新学习者 ID:5328”,但我不知道这是在哪里完成的。

我为这个问题道歉,我显然是个菜鸟,根据我在网上找到的教程,很难学习这种与数据库部分的连接。非常感谢您的帮助:D 如果我没有很好地解释问题,请告诉我,我很乐意提供更多信息。

最好的,雨果

【问题讨论】:

    标签: mysql node.js reactjs express


    【解决方案1】:

    我不会先假设什么。让我们先选择最简单的

    1.- 在您的邮递员上,从下拉列表中选择“application/json”,而不是文本。

    如果没有成功。

    2.- 安装正文解析器

    $ npm i body-parser
    

    完成后将其添加到您的快递中

    const express =require("express");
    const bodyParser=require("body-parser");
    
    ...
    
    
    const app = express();
    
    app.use(bodyParser.json());
    app.use(bodyParser.urlencoded({extended: true}));
    

    首先是这两个,但我很确定您需要做的就是将邮递员上的选项从 text 更改为 application/json

    【讨论】:

    • 非常感谢,您将“文本”更改为“JSON”的建议解决了问题。很抱歉没有发布完整的 Script.js 文件(它与教程示例中的相同),但我可以确认 body-parser 已经安装并且在 Script.js 中是必需的,所以这不是问题,它是文本您提到的 /JSON 部分。现在这部分已经解决,并且 Express 服务器正在向我显示终端中的其他错误。我会解决这些问题,希望我不会再次陷入困境。非常感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 2012-07-02
    • 2013-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-21
    • 1970-01-01
    • 2010-09-15
    • 1970-01-01
    相关资源
    最近更新 更多