【问题标题】:Node.js 405 (Method Not Allowed) and Column cannot be null MySQLNode.js 405(方法不允许)和列不能为空 MySQL
【发布时间】:2020-11-15 11:47:04
【问题描述】:

我正在尝试将数据发布到我的数据库。我有两个问题。 问题1: 我得到一个响应,该方法是不允许的。我把图片放在下面

[在此处输入图片描述][1]

我遇到的第二个问题是,在尝试将用户的 cmets 插入 MySQL 数据库时,我的数据一直返回 null:

这是错误: [在此处输入图片描述][2]

这是我的代码:

超级英雄.html:

<body>

    <div class="container">
        <h1> Welcome To Chatroom</h1>

        <div class="card mb-2" style="width: 38rem;" id="output">
    
        </div>

        <form class="inputs" id="form" name="form">
            <textarea class="comments" id="comments" placeholder="what's on your mind?" name="comments" ></textarea>
            <button type="submit" class="btn btn-primary" id="submitbtn">send</button>
        </form>

    </div>
    <script type="text/javascript" src="/javascript/superhero.js"></script>
    <script src="/reload/reload.js"></script>

</body>

superhero.js

const output = document.getElementById('output');
const username = document.querySelector('#username');
const date = document.querySelector('#date');
const submitbtn = document.querySelector('#submitbtn');
const commentOutput = document.querySelector('#message');
const form = document.querySelector('#form');
const comments = document.querySelector('#comments')

form.addEventListener('submit', function(e) {
    e.preventDefault(e);


    let formMessage = new FormData(form);

    formMessage.append('api-key', 'myApiKey');


    fetch('http://localhost:5502/superhero', {
        method: 'POST',
        headers: {
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        },
        body: JSON.stringify(formMessage)

    }).then(function(response) {
        console.log(response)
        return response.text();
    }).then(function(text) {
        console.log(text);
    }).catch(function(error) {
        console.log(error);
    });
})

index.js


router.post("/superhero", function(req, res) {

    const user = req.user;
    const comments = req.body.comments;

    sqlDatabase.query("INSERT INTO comments (user_id, comments) VALUES (?, ?)", [user, comments],
        function(error, results, fields) {
            if (error) throw error;
            console.log(results);
            console.log(error)
        });
})


router.get("/superhero", authenticationMiddleware(), function(req, res, err) {

    sqlDatabase.query("SELECT users.username, comments.comments, comments.date FROM users INNER JOIN comments ON users.user_id=comments.user_id",
        function(error, results, fields) {
            if (error) throw error;
            res.render('superhero');
            console.log(results);
        })

})

顺便说一句,我是个菜鸟。一直在为此苦苦挣扎。任何帮助,将不胜感激。 [1]:https://i.stack.imgur.com/nG7Tq.png [2]:https://i.stack.imgur.com/JlgOp.png

【问题讨论】:

  • 您是否在 GET 请求中包含了身份验证信息?您是否尝试打印出请求的正文?
  • 用户 = req.user 来自护照验证。用户从 html 发送的唯一信息是 cmets。不,我没有在 GET 请求中包含身份验证。你指的是从 route.get() 打印出来?
  • 我实际上是不确定的。

标签: javascript html mysql node.js fetch-api


【解决方案1】:

终于解决了这个问题。我改变了这条线 来自:

body: JSON.stringify(formMessage)

 body: JSON.stringify({ comments: comments.value })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-12-20
    • 2023-03-23
    • 2011-06-21
    • 2011-04-05
    • 2014-05-23
    • 2011-04-03
    • 1970-01-01
    相关资源
    最近更新 更多