Не удается удалить пару ключ-значение из объекта js

#javascript #arrays #node.js #json #mongodb

#javascript #массивы #node.js #json #mongodb

Вопрос:

Я получаю объект js из запроса mongodb, и я хочу удалить пару ключ-значение из объекта с помощью delete opt, но не удаляю, а значение isFollowing не задано, но код в части if выполняется успешно. (с использованием NodeJS)

Я уже пытался удалить с помощью delete opt …. однако он работает с неопределенным, но значение, которое я устанавливаю для isFollowing, не отражается в object .

 baseData.numFollowers = baseData.followers.length;
    baseData.numFollowing = baseData.following.length;    
    if(forWhom === 'self'){
        delete baseData.following;
        delete baseData.followers;
    }else 
    if(forWhom === 'other'){
        const selfUID = req.body.self_id;
        baseData.isFollowing = baseData.followers.includes(selfUID);
        delete baseData.followers;
        delete baseData.following;

    }

    let toSend = {success:true, basic:baseData};
  

Получение результата:

 { 
  following: [],
  followers: [],
  numFollowers: 0,
  numFollowing: 0
 }
  

Ожидаемый результат:

 {
  numFollowers: 0,
  numFollowing: 0,
  isFollowing: true (or false)
}
  

Комментарии:

1. Это должно быть что-то с MongoDB, не уверен, что я с этим не знаком. Можете ли вы показать свой код, как вы сохраняете данные в БД?

2. @jcubic User.create(объект).then((данные)=>{}).catch((ошибка)=>{});

3. Вам нужно удалить из простого объекта javascript или из базы данных?

4. @MoadEnnagi объект JS. Сделал это с помощью первого ответа: D

Ответ №1:

Для использования delete вам необходимо преобразовать документ модели в простой объект JavaScript путем вызова toObject , чтобы вы могли свободно манипулировать им следующим образом:

 const base = baseData.toObject();

base.numFollowers = base.followers.length;
    base.numFollowing = base.following.length;    
    if(forWhom === 'self'){
        delete base.following;
        delete base.followers;
    }else 
    if(forWhom === 'other'){
        const selfUID = req.body.self_id;
        base.isFollowing = base.followers.includes(selfUID);
        delete base.followers;
        delete base.following;

    }

    let toSend = {success:true, basic:base};