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

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

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

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

Node.js

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Express

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

Q&A

解決済

2回答

443閲覧

express+Mongodbでデータを編集して更新するときに初期値を表示したい

otaaa

総合スコア19

MongoDB

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

Node.js

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

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Express

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

0グッド

0クリップ

投稿2020/04/29 06:12

編集2020/04/29 06:59

前提・発生している問題

express+Mongodbでマッチングアプリを作っていて、
データベースの内容を更新することができたのですが、編集画面に行ったときに画像の様に一部のみ初期値が入っており
<input type='text'>の案件名と
<select>の募集人数と
<input type='date'>の納期
に初期値が入りません。

元のデータ ーーーーーーーーーーーーーー projectName:"titl" amount:9999 corporateCaseFlag:false detail: " kk " demandSkill: " kkk " applicants:1 paymentDate:2020-04-30T00:00:00.000+00:00

編集画面

該当のソースコード

app.js --------------------- var express = require('express'); const Project = require('../model/projectSchema'); router.get('/:projectID/edit', async function (req, res, next) { Project.findById(req.params.projectID, (err, project) => { if (err) console.log('error'); res.render('Project/projectEdit', { project: project }); }); }); router.post('/:projectID/update', async (req, res) => { const project = await Project.update( { _id: req.params.projectID }, { $set: { projectName: req.body.projectName, amount: req.body.amount, corporateCaseFlag: req.body.checkflag, detail: req.body.detail, demandSkill: req.body.demandSkill, applicants: req.body.applicants, paymentDate: req.body.paymentDate, }, }, function (err) { if (err) { res.send(err); console.log(err); } } ); res.redirect('/project'); res.render('index', { projects: projects }); });
projectSchema.js ------------------------------ const mongoose = require('mongoose'); const projectSchema = new mongoose.Schema({ projectName: { type: String, required: [true, 'projectName is required'], }, amount: { type: Number, required: [true, 'amount is required'], }, createDate: { type: Date, }, editDate: { type: Date, }, finishFlag: { type: Boolean, required: [true, 'flag is required'], }, corporateCaseFlag: { type: Boolean, required: [true, 'corporateCaseFlag is required'], }, detail: { type: String, required: [true, 'detail is required'], }, demandSkill: { type: String, required: [true, 'demandSkill is required'], }, applicants: { type: Number, }, paymentDate: { type: Date, required: [true, 'paymentDate is required'], }, }); module.exports = mongoose.model('Project', projectSchema, 'project');
projectEdit.ejs ----------------------------------------- <div class="container"> <div class="row justify-content-center"> <div class="col-sm-6 px-0 mt-3"> <div class="card"> <div class="card-header"> 案件編集 </div> <div class="card-body"> <form action="/project/<%-project._id%>/update" method="post"> <div class="form-group"> <label for="exampleInputEmail1">案件名</label> <input name="projectName" type="text" class="form-control"  value="<%-project.projectName%>" /> </div> <div class="custom-control custom-switch"> <label class="custom-control-label" for="customSwitch1" >企業内案件</label > <input name="corporateCaseFlag" type="checkbox" class="custom-control-input" id="customSwitch1" value="<%-project.corporateCaseFlag%>" /> </div> <div class="form-group"> <label for="exampleFormControlTextarea1">案件詳細</label> <textarea name="detail" class="form-control" id="exampleFormControlTextarea1" rows="3" > <%-project.detail%> </textarea > </div> <div class="form-group"> <label for="exampleFormControlTextarea1">求めるスキル</label> <textarea name="demandSkill" class="form-control" id="exampleFormControlTextarea1" rows="3" > <%-project.demandSkill%> </textarea > </div> <div class="form-group"> <label for="exampleFormControlSelect1">募集人数</label> <select name="applicants" class="form-control" id="exampleFormControlSelect1" value="<%-project.applicants%>" > <option>1</option> <option>2</option> <option>3</option> <option>4</option> <option>5</option> </select> </div> <div> <label for="exampleInputEmail1">納期</label> <input name="paymentDate" type="Date" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" value="<%-project.paymentDate%>" /> <script type="text/javascript"> //今日の日時を表示 window.onload = function () { //今日の日時を表示 var date = new Date(); var year = date.getFullYear(); var month = date.getMonth() + 1; var day = date.getDate(); var toTwoDigits = function (num, digit) { num += ''; if (num.length < digit) { num = '0' + num; } return num; }; var yyyy = toTwoDigits(year, 4); var mm = toTwoDigits(month, 2); var dd = toTwoDigits(day, 2); var ymd = yyyy + '-' + mm + '-' + dd; document.getElementById('exampleInputEmail1').min = ymd; }; </script> </div> <div> <label for="inlineFormInputGroup">金額</label> <div class="input-group mb-2"> <div class="input-group-prepend"> <div class="input-group-text">¥</div> </div> <input name="amount" type="text" class="form-control" id="inlineFormInputGroup" placeholder="金額" value="<%-project.amount%>" /> </div> </div> <button type="submit" name="button">更新</button> </form> </div> </div> </div> </div> </div>

試したこと

inputに対して、value="<%-project.projectName%>"など指定してみましたが、
中身は入っているのに初期値に反映されませんでした。

分かる方がいらっしゃいましたら教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

guest

回答2

0

自己解決

projectNameに関しては、全角のスペースが入っていたため、うまく行っていませんでした。
selectに関しては

<input name="applicants" type="number" class="textField" id="tField2" value="<%-project.applicants%>" />

この様にinputにしました。

dateに関しては、

<% changeDate=function (){ var dt = project.paymentDate; var y = dt.getFullYear(); var m = ("00" + (dt.getMonth()+1)).slice(-2); var d = ("00" + dt.getDate()).slice(-2); var result = y +"-"+ m+"-" + d; return result; }%> <%paymentDate=changeDate();%> <label for="exampleInputEmail1">納期</label> <input name="paymentDate" type="Date" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" value="<%-paymentDate%>" />

この様にしました

投稿2020/05/02 07:12

otaaa

総合スコア19

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

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

0

value="<%project.projectName%>"

ちょっとソースを眺めただけですけど、たとえば案件名がスクリプトタグ「<%」みたいですが

「<%=」や「<%-」でも案件名が表示されませんか?

投稿2020/04/29 06:50

technocore

総合スコア7225

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

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

otaaa

2020/04/29 07:00

ご回答ありがとうございます。 <%-にしてもダメでした。
technocore

2020/04/29 07:06

私ならVisual Studio Codeを使っているので、デバッガを使ってどこで変数の受け渡しに失敗しているかなど追跡しますね。 とりあえずconsole.log()などでコンソールに値を出力して確かめてみては?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問