Как объединить / объединить два массива в один и тот же индекс почтового запроса в node.js / express и преобразовать в объект для вставки модели mon goose - PullRequest
0 голосов
/ 22 января 2020

У меня есть страница, которая получает два массива входных элементов и отправляет их по запросу в моем приложении. js:

 <input type="text" name="titleAttr[]" > </input>
 <input type="text" name="descriptionAttr[]"> </input>

Я создал схему, которая получает массив с 2 полями, titleAttr и descriptionAttr, которые соответствуют <input> элементам выше:

const mySchema = mongoose.Schema({
 titulo: String,
 attrs:  [{
   titleAttr: String,
   descriptionAttr: String
  }]
});

Я могу вставить данные вручную, и это работает:

MyModel.bulkWrite([ { insertOne : { document: {
 title : "TEST",
 attrs: [
  {titleAttr : "test 1", descriptionAttr: "This is a test 1"},
  {titleAttr: "test 2", descriptionAttr: "This is another test"}
 ] 
 } } } 
]);

Вот снимок экрана формы.

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

console.log(req.body.titleAttr); //result: [ 'test 1', 'test 2' ]
console.log(req.body.descriptionAttr);// result: [ 'This is a test 1', 'This is another test' ]

Этот код не работа:

        ConceitoHTML.bulkWrite([ { insertOne : { document: {
         titulo : req.body.title,
         attrs: [
          {
           titleAttr: req.body.titleAttr,
           descriptionAttr: req.body.descriptionAttr
          }
         ]
        } } } ]);

Я хочу объединить два моих массива и вставить в MongoDB как массив объектов. Как создать массив, подобный следующему?

const myArray = [
  { 
    titleAttr: req.body.titleAttr[0], 
    descriptionAttr: req.body.descriptionAttr[0]
  }, 
  {
    titleAttr: req.body.titleAttr[1], 
    descriptionAttr: req.body.descriptionAttr[1]
  } 
]

1 Ответ

0 голосов
/ 23 января 2020

Вы можете сделать это с помощью приведенного ниже кода 100 , чтобы получить ожидаемый массив, что вы хотите :

const {titleAttr, descriptionAttr} = req.body;
const myArray = [];

// check the length first, make sure it's same
if(titleAttr.length === descriptionAttr.length) {
  for(let i=0; i<titleAttr.length; i++) {
    myArray.push({ titleAttr: titleAttr[i], descriptionAttr: descriptionAttr[i] })
  }
}

console.log(myArray); // this is the array result

Я надеюсь, что это может помочь вам.

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