nongモジュールtraverseを使用して、mongodb/mongooseからのデータをフィルタリングしています。トラバースjsオブジェクトプロパティは、玉表示の文字列に引用符を追加します。
私は、このデータを取得する可能性があります:
[ { rating: 5,
title: { da: 'Web udvikling', en: 'Web Development' } },
{ rating: 5, title: { da: 'Node.js', en: 'Node.js' } } ]
'ダ' と 'エン' は言語を示します。私はこのような現在の言語後マングースデータをフィルタリングするtraverseを使用します。
var filtered = filterLanguage(lang, results);
// filter json obj by language
var filterLanguage = function(language, obj) {
return traverse(obj).map(function (item) {
if (this.key === language) {
this.parent.update(item);
}
});
};
私はその後、私のテンプレートでこれを示しています。
res.render('index', {
skills: filtered.skills
});
最後に、私はヒスイビューで表示:
ul.list-group
each skill, i in skills
if i < 5
li.list-group-item.sidebar-list-item= skill.title
残念ながら、それは引用符で表示されます:
<ul>
<li>'Web Development'</li>
<li>'Node.js'</li>
</ul>
これらの引用符はフィルタリングされていないデータ(results.skill.title.da
)にはありません。トラバースが追加されます。私は '普通の' jsonとモジュールを使用し、それは完全に動作しています。
mongooseのデータは簡単でシンプルですが、プロトタイプには多くのプロパティがあります。また、結果セットから '_id'(型bson/objectid型)プロパティを省略しないと、トラバースを停止します。
トラバースでは、マングースのデータに問題があるようです...これはなぜですか?それをどうやって修正することができますか? EDIT - -
私は解決策が見つかりました: var json = JSON.parse(JSON.stringify(results)); var filtered = filterLanguage(lang, json);
これは引用符を削除しますが、私はまさにそれはわからない:私はこれを行うフィルタリング前
をそうです。何とかmongooseの結果をJSONに変換しますか?説明は高く評価されるだろう。
質問にfilterLanguage()メソッド本文が含まれていました。これは2回呼び出されるべきではありません。それはタイプミスです。一度だけ - それに更新された質問。 – olefrank
解決策reduceByLangは私にこのエラーを与えます: "TypeError:未定義のプロパティ 'da'を読み取ることができません。 – olefrank
興味深いことに、配列や関数などをデータに追加しようとしましたが、正確なエラーを再現できませんでしたアレイ。プロパティが 'null'でも同じエラーではなかった場合は壊れた唯一のものです。あなたは完全なデータの構造についてもっと分かち合いたいですか? – shariffy