Довольно грустно, а? Обычно я делаю это, создавая контейнер итераторов вместо удаления во время обхода. Затем прокрутите контейнер и используйте map.erase ()
std::map<K,V> map;
std::list< std::map<K,V>::iterator > iteratorList;
for(auto i : map ){
if ( needs_removing(i)){
iteratorList.push_back(i);
}
}
for(auto i : iteratorList){
map.erase(*i)
}
tags - это массив строк, и вы помещаете в него objectId, поэтому он выдает ошибку. CastError: Ошибка приведения к массиву для значения "['tag1', 'tag2']" в пути "tags"
[ 112] Есть несколько решений, которые вы можете реализовать согласно вашему требованию. см. пример ниже.
var tags = req.body.tags;
var tagsObjectId=[];
tags.forEach((item, index) => {
Tag.findOne({name: item}, (err,result)=> {
if(!err){
tagsObjectId.push(result._id)
}
});
})