#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};