ここに問題があります。mongodb コレクションから json フラット ファイルとして直接エクスポートしています。phantomjs アプリで MongoDB からフラット ファイルを読み取って解析し、それを phantomjs が解析するオブジェクトに変換しようとしています。何らかの理由で、JSON 文字列を正常に解析できません。
(注:jQueryソリューションはありません。これは生のjavascriptである必要があります)
これがmongodbのフラットファイルです。それは問題ないようです:
{ "host" : "www.myfoxphilly.com", "path" : "/category/233430/entertainment", "created_at" : { "$date" : 1375199393295 }, "_id" : { "$oid" : "51f7e0a1dc12a13510000002" } }{ "host" : "www.news9.com", "path" : "/category/112032/news", "created_at" : { "$date" : 1375285798173 }, "_id" : { "$oid" : "51f9322668ee1e660c000001" } }{ "host" : "www.myfoxphilly.com", "path" : "/category/233430/entertainment", "created_at" : { "$date" : 1375285823602 }, "_id" : { "$oid" : "51f9323f68ee1e660c000002" } }
上記の JSON フラット ファイルを解析しようとしている構成ファイルは次のとおりです。
var fs = require('fs');
var data = fs.read('configData.json');
var newdata = JSON.stringify(data);
var dataobj = eval("["+newdata+"]");
console.log(typeof(newdata));
exports.tests = dataobj;
// Sample object (works fine like this):[{path:'/category/112043/sports' ,host:'www.newson6.com'}];
exports.getFileName = function(test,local) {
return 'results/' + test.host.replace(/\./g,'-').replace(/\:[0-9]+/,'').replace('-com','').replace('www-','') + test.path.replace(/\//g,'-').replace(/\?clienttype=/g, "clienttype") + ((local) ? '-locl' : '-prod')
}
したがって、ファントムを実行すると、データが取得されません。その JSON は、コメント セクションにあるオブジェクトの例ではなく、1 つのオブジェクトになります。
JS 共通ライブラリのフラット ファイル インポートを置き換えて、「データ」を文字列にすると、次のように問題なく動作します。
var data = '{"host" : "www.myfoxphilly.com", "path" : "/some/path/233409"}';
JSON を文字列としてインポートすると、js 共通ライブラリ ファイルのインポートで何らかの問題が発生しますか? 助けてください。
繰り返しますが、jQueryはありません。見ずに反対票を投じます。私は <3 jQuery ですが、いつ使用するのが適切か (つまり、ブラウザーベースの js) を理解する必要があります。