Почему бы не использовать .Fla sh и .Redirect Fire для Route в проекте Node.js Express? - PullRequest
0 голосов
/ 07 мая 2020

Я широко использую fla sh в моем приложении Node.js Express, но для одного маршрута я не могу получить fla sh или перенаправить на работу. Представления имеют мопс :

form.permissive(action=`/setPermissive/${device._id}/${device.allowUnlock}` method="POST")
  label.groupTitle(for="setPermissive") Allow Unlock
    button.switch(type="submit" name="setPermissive")
      label.switch
        if (device.allowUnlock)
          input(type="checkbox" name="setPermissive" checked)
        else
          input(type="checkbox" name="setPermissive" )
        span.slider

маршрут:

router.post('/setPermissive/:id/:permissive', catchErrors(deviceController.changePermissive));

контроллер:

exports.changePermissive = async (req, res) => {
  const permissive = (req.params.permissive === "false") ? false : true;
  const device = await Device.findOneAndUpdate({ _id: req.params.id },  { $set: { allowUnlock : !permissive } }, {
    new: true
  }).exec();
  req.flash('success', `Successfully updated ${device.name}`);
  res.redirect('/devices');
};

Я знаю, что Device.findOneAndUpdate выполняется, потому что я его можно увидеть в бэкэнде, но я не получаю сообщение fla sh, меня не перенаправляют, и пользовательский интерфейс не отражает обновление. Если я вручную обновлю sh страницу, я получаю сообщение fla sh и пользовательский интерфейс обновляется.

У меня есть похожие маршруты, которые fla sh перенаправляют, как ожидалось, например:

form.form(action=`/changeStatusEnabled/${device._id}/${newStateEnabled}` method="POST")
  input.button(type="submit" value=`${currentStateEnabled}` onclick=`return confirm('${msgConfEnabled}');`)

router.post('/changeStatusEnabled/:id/:state', catchErrors(deviceController.changeStatusEnabled));

exports.changeStatusEnabled = async (req, res) => {
  const myBoo = (req.params.state === "enable") ? true : false;
  const device = await Device.findOneAndUpdate({ _id: req.params.id }, { $set: { isEnabled: myBoo }}, {
    new: true
  }).exec();
  req.flash('success', `Successfully updated ${device.name}`);
  res.redirect(`/devicesAdmin`);
};

Что мне не хватает?

1 Ответ

0 голосов
/ 07 мая 2020

По какой-то причине класс .permissive вызывает икоту. Если кто-нибудь знает почему, я весь уши.

изменено:

form.permissive(action=`/setPermissive/${device._id}/${device.allowUnlock}` method="POST")
  label.groupTitle(for="setPermissive") Allow Unlock
    button.switch(type="submit" name="setPermissive")
      label.switch
        if (device.allowUnlock)
          input(type="checkbox" name="setPermissive" checked)
        else
          input(type="checkbox" name="setPermissive" )
        span.slider

на:

form(action=`/setPermissive/${device._id}/${device.allowUnlock}` method="POST")
  label.groupTitle(for="setPermissive") Allow Unlock
    button.switch(type="submit" name="setPermissive")
      label.switch
        if (device.allowUnlock)
          input(type="checkbox" name="setPermissive" checked)
        else
          input(type="checkbox" name="setPermissive" )
        span.slider
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...