【问题标题】:NodeJS and MongoDB "Cannot POST /"NodeJS 和 MongoDB “无法发布 /”
【发布时间】:2020-04-02 11:59:38
【问题描述】:

一直在将 mongoDB 与 mongoose ODM 一起使用,但我似乎无法弄清楚。我一直在关注一个在线教程,但是当我测试我的代码时,它被重定向到一个空白页面,上面写着“无法 POST /”

这是我的代码:

server.js

var mongoose = require("mongoose");
var bodyParser = require("body-parser");
var express = require("express");
var app = express();


var PORT = 3332;

app.use("/", express.static(__dirname));

app.use(bodyParser.json());
app.use(bodyParser.urlencoded({extended: true}));


mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost/gamedata", {
    useNewUrlParser: true
});


var gameSchema = new mongoose.Schema({
    nickname: String
});

var User = mongoose.model("User", gameSchema);


app.post("/addname", (req, res) =>{

    var playerNickname = new User(req.body);
    playerNickname.save()
    .then(item => {

        console.log("nickname created")
        res.send("item saved to database");


    })
    .catch(err => {

        res.status(400).send("unable to save to database");
        console.log("error baby!");

    });
});

app.listen(PORT, function () {
    console.log("server is up and running using port " + PORT)
});

index.html

<html>
<link href="https://fonts.googleapis.com/css?family=Press+Start+2P&display=swap" rel="stylesheet">

<body>
<h1 class="center-align">Create Nickname</h1>
    <form method="post" name="/addname">
        <input id="pickName" type='text' name='pickName' placeholder='Nickname' required>
        <input id='ready' value=" Ready >" type='submit'>
    </form>

</body>
<script>
</script>

</html>

当我改变时似乎可以解决它

app.use("/", express.static(__dirname));

转至以下代码:

app.use("/", (req, res) => {
    res.sendFile(__dirname + "/index.html");
});

但在我的具体情况下,我不能这样做。

有人知道变通办法吗?

【问题讨论】:

    标签: javascript node.js mongodb post mongoose


    【解决方案1】:

    您应该更改您的 index.html

    替代使用:

     <form method="post" name="/addname">
    

    你应该使用:

    <form method="post" action="/addname">
    

    这应该可以解决您的问题。


    动作属性

    action 属性定义了提交表单时要执行的操作。

    通常,当用户点击提交按钮时,表单数据会发送到服务器上的一个页面。

    在上面的示例中,表单数据被发送到服务器上名为“/addname”的页面。此页面包含处理表单数据的脚本:

    如果省略action属性,则动作设置为当前页面。

    属性“名称”用于输入字段,而不是标签。 我刚刚在这里找到了一些信息。 https://www.w3schools.com/html/html_forms.asp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-13
      • 1970-01-01
      • 2018-11-25
      相关资源
      最近更新 更多