Mongoose: есть ли способ реализовать эту функцию с помощью одной операции обновления мангуста?

В коде есть несколько проблем:

function createGroups(totalPeople){
  let i = 1
  let group[i] = []; // issue #1
  let array = totalPeople

  totalPeople.map((user) => {

    if(group[i] =< 3){ // issues #2 and #3 
      group[i].push(user)
    }else{
      array.push(group[i]); // issue #4 
      i++; // issue #5 
    }
  })
};

Проблема №1:

Перед добавлением индекса вам нужно определить group как массив.

let group = []; 
group[i] = [];

Проблема №2:

Похоже, вы хотели сравнить group[i].length и 3

Проблема № 3:

Используйте <= вместо =<, чтобы сравнить ваши номера. Кроме того, если вы сравните длину с <= 3, у вас будет 4 человека на группу. Поскольку первый индекс в массивах равен 0.

Проблема № 4:

Вы нажимаете array, что является ссылкой на totalPeople. Это то, что вы имели в виду? Потому что я сомневаюсь, что это принесет ожидаемые результаты. Вы можете инициализировать пустой массив и нажимать на него массив группы [i]. И затем верните этот новый массив. Как правило, хорошей практикой в ​​функциональном программировании является возврат нового массива, а не изменение параметра, переданного в качестве параметра.

Проблема № 5:

Если вы увеличиваете i, вам нужно для инициализации group[i] в качестве массива, иначе вы не сможете нажать его, когда появится следующая итерация цикла.

Логика Differnet:

Теперь, когда вы исправили проблемы в своем коде, вот фрагмент, показывающий другой способ сделать это, используя Array.prototype.reduce :

const totalPeople = ["Joe", "Jack", "Jerry", "Jane", "Mary", "Billy", "Vicky", "Bobby"];

const groupsOfThree = totalPeople.reduce((accumulator, currentPerson, index) => {

  // pushing the current person in the topest group in the accumulator 
  accumulator[accumulator.length-1].push(currentPerson);

  // if it's the 3rd person, we're pushing the an empty group in the accumulator
  if (index % 3 === 2) {
    accumulator.push([]);
  }

  return accumulator;
}, [[]]); // the initial value of the accumulator will be an array containing an empty group

console.log(groupsOfThree);

0
задан Sonic_ 19 January 2019 в 11:54
поделиться

1 ответ

Да, есть способ:

router.post('/deleteDP',jwtValid,function (req,res) {
    user.findOneAndUpdate({$and:[{'_id': req.decoded.id},{db:{$exists:true}}]},{$set:{'dp':''}}, function (err, result) {
    if(!err){
       if(!result){
           return res.send("2")
       }
       res.send("0");
    }
    res.send("1")

    });

});

Это должно сработать:);

0
ответ дан vitomadio 19 January 2019 в 11:54
поделиться