前提・発生している問題
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。