Как я могу назначить поле в форме HTML вложенному полю в модели MongoDB? - PullRequest
0 голосов
/ 11 июля 2020

У меня есть приложение Node, которое использует MongoDB, принимает входные данные из формы и передает их в созданный мной API. Некоторые данные, полученные от пользователя, являются частью поля MongoDB с разными атрибутами. Я не уверен, как получить введенные данные от пользователя и сообщить своему контроллеру, что они принадлежат разным частям объекта. У меня есть модель, которая включает в себя следующие поля:

    startLocation: {
  //GeoJSON Data
  type: {
    type: String,
    default: 'Point',
    enum: ['Point']
  },
  coordinates: [Number],
  address: String,
  description: String
},

Если у меня есть пользователь во внешнем интерфейсе, введите «координаты» в форме, как я могу получить эти данные, назначенные полю координат на над моделью?

Обычно я передаю данные следующим образом:

    if (createForm) {
  createForm.addEventListener('submit', e => {
    e.preventDefault();
    const name = document.getElementById('name').value;
    const duration = document.getElementById('duration').value;
    const maxGroupSize = document.getElementById('maxGroupSize').value;
    const difficulty = document.getElementById('difficulty').value;
    const price = document.getElementById('price').value;
    const startLocation = document.getElementById('startLocation').value;
    const summary = document.getElementById('summary').value;
    const description = document.getElementById('description').value;
    const imageCover = document.getElementById('imageCover').value;
    createTour(
      name,
      duration,
      maxGroupSize,
      difficulty,
      price,
      startLocation,
      summary,
      description,
      imageCover
    );
  });
}

Упомянутая выше функция createTour имеет следующий код:

export const createTour = async (
      name,
      duration,
      maxGroupSize,
      difficulty,
      price,
      startLocation,
      summary,
      description,
      imageCover
    ) => {
      try {
        const res = await axios({
          method: 'POST',
          url: 'http://127.0.0.1:8000/api/v1/tours',
          data: {
            name,
            duration,
            maxGroupSize,
            difficulty,
            price,
            startLocation,
            summary,
            description,
            imageCover
          }
        });

Я бы подумал что правильный способ сделать это - использовать "startLocation.data" из приведенного выше, но я не могу заставить его работать правильно.

Я разместил весь свой код на GitHub здесь: GitHub

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...