Задать вопрос
@dollaween

Как в mongodb изменить пустые Boolean на false?

Допустим, есть такая простая форма:
<form action="/add">
  <input type="checkbox" name="placed">
</form>


И такая схема:
let schema = new Schema({
  placed: {
    type: Boolean,
    default: false,
    required: true
  }
});


При отправке этой формы, если чекбокс активен (checked), то все сохраняется как надо (placed === true). Но если снять галочку с чекбокса, то placed в базе данных не меняется на false.

Код построен таким образом, что если снять галочку с чекбокса, то поле placed вообще не отправляется.

Как в mongo сделать так, чтобы при получении пустого поля типа Boolean, он автоматически сохранялся как false?
Без изменения в HTML
  • Вопрос задан
  • 135 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@dollaween Автор вопроса
Решил вопрос изобретением велосипеда:
Все не отмеченные чекбоксы насильно добавил в FormData через append со значением false.

Примерно так:
let data = new FormData(form);
let checkboxes = form.querySelectorAll("input[type='checkbox']");

for (let i = checkboxes.length - 1; i >= 0; i--) {
  data.append(checkboxes[i].name, checkboxes[i].checked);
}


Это конечно лишний код, но другого решения не нашел :(
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
tsepen
@tsepen
Frontend developer
У тебя же поле placed обязательное - required: true, поэтому если ничего не приходит, то и изменений не будет. Попробуй убрать required: true, тогда если ничего не придет будет false
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы