Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS和MongoDB“无法发布/”_Javascript_Node.js_Mongodb_Post_Mongoose - Fatal编程技术网

Javascript NodeJS和MongoDB“无法发布/”

Javascript NodeJS和MongoDB“无法发布/”,javascript,node.js,mongodb,post,mongoose,Javascript,Node.js,Mongodb,Post,Mongoose,我一直在用mongoDB和mongoose ODM,但我似乎不明白。我一直在关注一个在线教程,但当我测试我的代码时,它会被重定向到一个空页面,上面写着“无法发布”/ 这是我的密码: server.js var mongoose = require("mongoose"); var bodyParser = require("body-parser"); var express = require("express"); var app = express(); var PORT = 3332

我一直在用mongoDB和mongoose ODM,但我似乎不明白。我一直在关注一个在线教程,但当我测试我的代码时,它会被重定向到一个空页面,上面写着“无法发布”/

这是我的密码:

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("/", (req, res) => {
    res.sendFile(__dirname + "/index.html");
});
但在我的特殊情况下,我不能这样做

有人知道变通方法吗?

您应该更改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>
代替使用:

 <form method="post" name="/addname">
你应使用:

<form method="post" action="/addname">
这应该能解决你的问题

动作属性

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

通常,当用户单击submit按钮时,表单数据被发送到服务器上的页面

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

如果省略了action属性,则该操作将设置为当前页面

属性名称在输入字段中使用,而不是在标记中使用。 我刚刚在这里找到一些信息。