У меня есть документ монго с именем New, в котором есть поддокумент с именем hashtags, который имеет значение name, которое является string. Я пытаюсь добавить все хэштеги, принадлежащие новому в переменной, но добавляю дополнительные символы (кажется, что строковое значение name плохо декодируется из bson или что-то в этом роде).
Новый документ:
var newSchema = new Schema({
...
hashtags: [{
type : mongoose.Schema.ObjectId,
ref: 'Hashtag'
}]
});
Документ с хэштегом:
var mongoose = require('mongoose')
var Schema = mongoose.Schema
var hashtagSchema = new Schema({
color: {
type: String,
default: '#000000'
},
name: {
type: String
}
});
var hashtag = mongoose.model('Hashtag', hashtagSchema )
module.exports = hashtag
Обрезанный тестовый код:
docs.forEach(noticia => {
if (noticia.hashtags.length > 0){
for(i in noticia.hashtags){
if (noticia.hashtags[i] && noticia.hashtags[i].name){
text += '#' + noticia.hashtags[i].name.replace(/\s/g,'') + ' '
}
}
}
})
console.info(text)
Консольный вывод:
#Lula #toBSON #_cast #_markModified #_registerAtomiC#$__getAtomics #hasAtomics #_mapCast #push #nonAtomicPush #$pop #pop #$shift #shift #pull #splice #unshift #sort #addToSet #set #toObject #inspect #indexOf #pull
Я пытался подать заявку noticia.hashtags[i].name.replace(/\s/g,'').toString() :
docs.forEach(noticia => {
if (noticia.hashtags.length > 0){
for(i in noticia.hashtags){
if (noticia.hashtags[i] && noticia.hashtags[i].name){
text += noticia.hashtags[i].name.toString() + ' '
}
}
}
})
Консольный выводLulatoBSON_cast_markModified_registerAtomic$__getAtomicshasAtomics_mapCastpushnonAtomicPush$poppop$shiftshiftpullspliceunshiftsortaddToSetsettoObjectinspectindexOfpull
Как мне расшифровать это строковое значение?
Во втором примере я удалил #. Я не использую никаких других специальных символов. В примере hashtags[0].name = 'Lula' и hashtags.length == 1





The for...in statement iterates over all non-Symbol, enumerable properties of an object.
var string1 = "";
var object1 = {a: 1, b: 2, c: 3};
for (var property1 in object1) {
string1 += object1[property1];
}
console.info(string1);
// expected output: "123"
Вы перебираете свойства noticia.hashtags
Это работает, меняя for...in на noticia.hashtags.forEach(hashtag => {}). Спасибо!
Можете ли вы привести пример специальных символов, которые вы видите? Во втором примере вы, кажется, не добавляете «#»