Используя Express и Handlebars, как я могу предварительно заполнить или перезагрузить опцию выбора меню из базы данных? - PullRequest
0 голосов
/ 15 октября 2019

У меня есть форма обновления пользователя, над которой я работаю. Пользователь может выбрать опцию из меню выбора, и эта опция сохраняется в БД в виде строки.

<select name="morality" id="morality">
  <option value="">Choose down below!</option>
  <option value="Good"> Good</option>
  <option value="Neutral">Neutral</option>
  <option value="Evil">Evil</option>
</select> 

Когда пользователь выбирает опцию, я могу публиковать сообщения в базе данных. Когда я перезагружаю страницу, я хотел бы получить выбранное значение и использовать его для добавления выбранного атрибута к соответствующей опции. Так что, если человек выбирает Нейтральный и сохраняет его, я бы хотел показать ...

<select name="morality" id="morality">
  <option value="">Choose down below!</option>
  <option value="Good"> Good</option>
  <option value="Neutral" selected >Neutral</option>
  <option value="Evil">Evil</option>
</select> 

1 Ответ

0 голосов
/ 15 октября 2019

Вы должны передать значение morality для просмотра при рендеринге страницы:

router.get('/edit/:id', function(req, res) {
  Model.findOne({_id:req.params.id},function(err,data){
      if(!err && data){
         res.render('home',{morality:data.morality});
          // or you can pass whole data object to view 
          //res.render('home',{data:data});
          // inside view {{data.morality}}
      }
  });
});

и в представлении добавить условие, подобное этому:

<select name="morality" id="morality">
  <option value="" {{morality==''?'selected':''}}>Choose down below!</option>
  <option value="Good" {{morality=='Good'?'selected':''}}> Good</option>
  <option value="Neutral" {{morality=='Neutral'?'selected':''}}>Neutral</option>
  <option value="Evil"  {{morality=='Evil'?'selected':''}}>Evil</option>
</select> 
...