0

私はmongodbでエクスプレスを使用することを学んでいます。私はこのコードを持っています & それは動作します (ただし、「pug」ファイルは含まれていません)

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

var mongoose = require("mongoose");
mongoose.Promise = global.Promise;
mongoose.connect("mongodb://localhost:27017/my_db");
var personSchema = new mongoose.Schema({
    name: String,
    age: Number,
    nationality: String,
});
var Person = mongoose.model("Person", personSchema);

//this code block will be reused in this question, from here
app.get("/", (req, res) => {
    res.sendFile(__dirname + "/index.html");
});
//to here

app.post("/person", (req, res) => {
    var myData = new Person(req.body);
    myData
        .save()
        .then((item) => {
            res.send("Name saved to database");
        })
        .catch((err) => {
            res.status(400).send("Unable to save to database");
        });
});

app.listen(port, () => {
    console.log("Server listening on port " + port);
});

index.html不要だと思うので、ここにファイルを含めるつもりはありません。ただし、「pug」ファイルを使用して同じこと (from を介してデータベースにデータを入力) を行う場合、コードは何も出力しませんが、使用した「pug」ファイルを自動的にダウンロードします。これは、上記のコードから変更したものです。

app.set('view engine', 'pug');
app.set('views','./views');

app.get("/", (req, res) => {
    res.sendFile(__dirname + "/views/index.pug");
});

次に、そのコード ブロックに少し変更を加えました。res.sendFile (__dirname + "/views/index.pug")res.render(__dirname + "/views/index.pug")に変更しました。ブラウザに「index.pug」ファイルを出力しますが、詳細を含むフォームを送信しても何もしません。これは私の「パグ」ファイルです。

html
    head
        title MongoDB

body
    form(action = '/person', method = 'POST')
    br
    div
    label Enter Your Name: 
    input(type = 'text', name = 'name')
    br
    div
    label Enter Your Age: 
    input(type = 'number', name = 'age')
    br
    div
    label Enter Your Nationality: 
    input(type = 'text', name = 'nationality')
    br
    div
    button(type = 'submit') Submit
        

「html」ファイルの代わりに「pug」ファイルを使用してデータを送信するようにこのコードを変更するのを手伝ってください。(実際、「pug + expressjs + mongoose」を使用する方法がいくつか見つかりました。これらは非常に異なる方法であるため、このコードを変更することはできませんでした。そのため、コミュニティに助けを求めています...ありがとうございます!)

4

1 に答える 1