質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

Q&A

解決済

1回答

487閲覧

ローカルホストでフォームに入力しても、ファイルで空白でセーブされています。どうしたら、新しい情報をセーブできますか?

Chibichan

総合スコア72

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

0グッド

0クリップ

投稿2021/04/01 06:42

Contactで入力して、情報を送信し、Subscriberファイルで入力した情報を閲覧できるようにしたいのですが、情報が入ってません。どうしたら、新しい情報をセーブできるでしょうか。index.js, subscriberController.js, contact.ejs,subscriber.ejsのファイルを添付しました。
どうぞよろしくお願いいたします。
index.js

const express = require("express"), app = express(), mongoose = require("mongoose"), Subscriber = require("./models/subscriber"), subscribersController = require("./controllers/subscribersController"); mongoose.connect( "mongodb://localhost:27017/recipe_db", {useNewUrlParser: true} ); const db = mongoose.connection; db.once("open", () => { console.log("Successfully connected to MongoDB using Mongoose!"); }); var myQuery = Subscriber.findOne({ name: "Jon Wexler" }) .where("email", /wexler/); myQuery.exec((error, data) => { if(data) console.log(data.name); }); app.set("port", process.env.PORT || 3000); app.set("view engine", "ejs"); app.use(express.json()); app.get("/subscribers", subscribersController.getAllSubscribers, (req, res, next) => { res.render("subscribers", { subscribers: req.data}); }); app.get("/contact", subscribersController.getSubscriptionPage); app.post("/subscribe", subscribersController.saveSubscriber); app.listen(app.get("port"), () => { console.log(`Server running at http://localhost:${app.get("port")}` ); });

subscriberController.js

const { rawListeners } = require("../models/subscriber"); const Subscriber = require("../models/subscriber"); exports.getAllSubscribers = (req, res, next) => { Subscriber.find( {}, (error, subscribers) => { if(error) next(error); req.data = subscribers; next(); }); }; exports.getSubscriptionPage = (req, res) => { res.render("contact"); }; exports.saveSubscriber = (req, res) => { let newSubscriber = new Subscriber({ name: req.body.name, email: req.body.email, zipCode: req.body.zipCode, vip: req.body.vip }); newSubscriber.save((error, result) => { if (error) res.send(error); res.render("thanks"); }); };

subscriber.ejs

<div class="list-container"> <% subscribers.forEach(s => { %> <div class="subscriber"> <p> <span class="item-label">Name:</span> <%= s.name %> </p> <p> <span class="item-label">Email:</span> <%= s.email %> </p> <p> <span class="item-label">ZipCode:</span> <%= s.zipCode %> </p> <p> <span class="item-label">VIP:</span> <%= s.vip %></p> <% }); %> </div> </div>

contact.ejs

<div class="col-sm-6"> <img src="images/graph.png" alt=""> </div> <div class="col-sm-6"> <h1>Subscribe!</h1> <p>Enter your email if you're interested to learn more:</p> <form action="/subscribe" method="post"> <label for="name">Name</label> <input type="text" name="name" value=""> <br> <label for="email">Email</label> <input type="email" name="email" value=""> <br> <label for="zipCode">ZipCode</label> <input type="text" name="zipCode" value=""> <br> <label for="vip">VIP</label> <input type="text" name="vip" value=""> <br> <input type="submit" name="" value="Submit"> </form> </div>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Mongoose のデータベース側の設定と、実行時のログはどうなっていますか?
今回の症状ではそれが一番大事です。質問文を見ると、何もやってないのが原因ではないかと推測します。

投稿2021/04/02 02:07

ahidaka

総合スコア391

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chibichan

2021/04/02 06:30

ありがとうございます!何もしてません。Mongodbに接続ができたら、自然にできると思いっていました…調べてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問