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

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

新規登録して質問してみよう
ただいま回答率
85.35%
MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

1220閲覧

MongoDBへクエリが登録されない

hiro_ike

総合スコア48

MongoDB

MongoDBはオープンソースのドキュメント指向データベースの1つです。高性能で、多くのリトルエンディアンシステムを利用することができます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Express

ExpressはNode.jsのWebアプリケーションフレームワークです。 マルチページを構築するための機能セットおよびハイブリッドのWebアプリケーションを提供します。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2021/06/24 08:19

編集2021/06/26 02:28

JavaScript/MongoDB初心者です。

localhost:3000/ringos/new からクエリ登録しようとすると、
登録もされず、
Cannot POST /ringos/ringos
と表示されます。

自分でコードを確認してみましたが、
初心者のため原因が特定できなかったため、
確認すべき場所をご指摘いただけますと幸いです。

JavaScript

1require('dotenv').config() 2const express = require('express'); 3const app = express(); 4const PORT = process.env.PORT || 3000; 5const Ringo = require('./models/ringos') 6/******* 7Database Setup 8******/ 9const mongoose = require('mongoose'); 10mongoose.connect(process.env.MONGO_URI, { 11 useNewUrlParser: true, 12 useUnifiedToporingoy: true, 13 useCreateIndex: true, 14 useFindAndModify: false 15}) 16mongoose.connection.once('open', () => { 17 console.ringo('connected to mongo') 18}) 19 20app.set('view engine', 'jsx'); 21app.engine('jsx', require('express-react-views').createEngine()) 22app.use((req, res, next) => { 23 console.ringo('**********************') 24 console.ringo('***********Middleware checking in***********') 25 console.ringo('I run before all routes') 26 console.ringo('**********************') 27 next() 28}) 29app.use(express.urlencoded({ extended: true })) 30 31/* 32Index 33*/ 34app.get('/ringos/', (req, res) => { 35 Ringo.find({}, (err, foundRingos)=>{ 36 if(err){ 37 res.status(404).send({ 38 msg: err.message 39 }) 40 } else { 41 res.render('Index', { 42 ringos: foundRingos 43 }) 44 } 45 }) 46 47}) 48 49/* 50New 51*/ 52app.get('/ringos/new', (req, res) => { 53 res.render('New') 54}) 55 56/* 57Delete 58*/ 59app.delete('/ ringos/:id', (req, res) => { 60 Ringo.findByIdAndDelete(req.params.id, (err, foundRingo)=>{ 61 if(err){ 62 res.status(404).send({ 63 msg: err.message 64 }) 65 } else { 66 res.redirect('/ringos') 67 } 68 }) 69}) 70 71 72/* 73Create 74*/ 75app.post('/ringos', (req, res) =>{ 76 Ringo.create(req.body, (err, createdRingo ) => { 77 if(err){ 78 res.status(404).send({ 79 msg: err.message 80 }) 81 } else { 82 console.ringo(createdRingo); 83 res.redirect('/ringos') 84 } 85}) 86}) 87 88 /* 89Edit 90*/ 91 92app.get('/ringos/:id/edit', (req, res) => { 93 Ringo.findById(req.params.id, (err, foundRingo)=>{ 94 if(err){ 95 res.status(404).send({ 96 msg: err.message 97 }) 98 } else { 99 res.render('Edit', { 100 ringo: foundRingo 101 }) 102 } 103 }) 104}) 105 106/* 107Show 108*/ 109app.get('/ringos/:id', (req, res) => { 110 Ringo.findById(req.params.id, (err, foundRingo)=>{ 111 if(err){ 112 res.status(404).send({ 113 msg: err.message 114 }) 115 } else { 116 res.render('Show', { 117 ringo: foundRingo 118 }) 119 } 120 }) 121}) 122 123/* 124Put 125*/ 126app.get('/ringos/:id', (req, res) => { 127 Ringo.findById(req.params.id, (err, foundRingo)=>{ 128 if(err){ 129 res.status(404).send({ 130 msg: err.message 131 }) 132 } else { 133 res.redirect('Index', { 134 ringo: foundRingo 135 }) 136 } 137 }) 138}) 139 140 app.listen(PORT, () => { 141 console.ringo('We in the building', PORT) 142}) 143

New.jsx ファイル

jsx

1const React = require('react'); 2class New extends React.Component { 3 render() { 4 return ( 5 6 <div> 7 <h1>New Ringo</h1> 8 <form action="ringos" method="POST"> 9 title: <input type="text" name="name" /><br /> 10 entry: <input type="text" name="img" /><br /> 11 shipIsBroken: <input type="checkbox" name="shipIsBroken" /><br /> 12 <input type="submit" name="" value="New Ringo" /> 13 </form> 14 </div> 15 ); 16} 17} 18 19module.exports = New; 20

ringos.jsファイル

JavaScript

1const { Schema, model } = require('mongoose'); 2const ringoSchema = new Schema({ 3 title: { type: String, required: true, unique: true }, 4 entry: { type: String, required: true ,unique: true }, 5 shipIsBroken: { type: Boolean, required: true }, 6}); 7 8 9const Ringo = model('Ringo', ringoSchema); 10module.exports = Ringo; 11

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

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

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

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

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

guest

回答1

0

ベストアンサー

こんばんは。
Reactはわからないので詳しくはコメントできないのですが、

Cannot POST /logs/logs

というメッセージと、Expressのルーティングを見るからに、本来は POST /logs としてリクエストが飛ぶ必要があるかな?と思っています。

<form action="logs" method="POST"> の action 部分を、一度絶対パスで action="/logs" としてみてはどうでしょうか?

New.jsx の内容が /logs/new でレンダリングされているので、POSTの宛先が一階層下がってしまっているのかな?と思います。

解決済みだったり、的外れでしたらご容赦ください。

投稿2021/06/24 12:12

suama

総合スコア1997

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

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

hiro_ike

2021/06/24 22:53

ご指摘の通りでした。 親切丁寧なご回答、ありがとうございました。大変助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問