一般的なNode.jsHTTPリクエストスクリプトを使用して約4000のURLを解析しています。
(function (i){
http.get(options, function(res) {
var obj = {};
obj.url = hostNames[i];
obj.statusCode = res.statusCode;
obj.headers = res.headers;
db.scrape.save(obj);
}).on('error',function(e){
console.log("Error: " + hostNames[i] + "\n" + e.stack);
})
})(i);
約1300のURLでこのエラーが発生し、スクリプト全体が停止します。URLのリストにpage.lyがないため、page.lyが何であるかわかりません。私は多くの調査を行いましたが、このエラーの原因を特定できませんでした。
誰かがNode.jsでのHTTPリクエストに精通している場合、私を助けてくれませんか?
Error: key page.ly must not contain '.'
at Error (unknown source)
at Function.checkKey (/Users/loop/node_modules/mongojs/node_modules/mongodb/node_modules/bson/lib/bson/bson.js:1421:11)
at serializeObject (/Users/loop/node_modules/mongojs/node_modules/mongodb/node_modules/bson/lib/bson/bson.js:355:14)
at packElement (/Users/loop/node_modules/mongojs/node_modules/mongodb/node_modules/bson/lib/bson/bson.js:854:23)
at serializeObject (/Users/loop/node_modules/mongojs/node_modules/mongodb/node_modules/bson/lib/bson/bson.js:359:15)
at Function.serializeWithBufferAndIndex (/Users/loop/node_modules/mongojs/node_modules/mongodb/node_modules/bson/lib/bson/bson.js:332:10)
at BSON.serializeWithBufferAndIndex (/Users/loop/node_modules/mongojs/node_modules/mongodb/node_modules/bson/lib/bson/bson.js:1502:15)
at InsertCommand.toBinary (/Users/loop/node_modules/mongojs/node_modules/mongodb/lib/mongodb/commands/insert_command.js:132:37)
at Connection.write (/Users/loop/node_modules/mongojs/node_modules/mongodb/lib/mongodb/connection/connection.js:198:35)
at __executeInsertCommand (/Users/loop/node_modules/mongojs/node_modules/mongodb/lib/mongodb/db.js:1745:14)
at Db._executeInsertCommand (/Users/loop/node_modules/mongojs/node_modules/mongodb/lib/mongodb/db.js:1801:5)
Loops-MacBook-Air:JS loop$
何がこれを防ぐことができますか?私のスクリプトはあまりうまくスケーリングしていないようです。
編集:私が得ている答えから-MongoDBでは許可されていない「。」を持つキーがどこかに存在し、それをエスケープすることになっています。しかし、疑問は残ります-私のキーが、、、およびだけurl
である場合、中にが含まれているキーが表示される原因は何ですか?statusCode
headers
.
編集:バグが見つかりました。以下に答えてください。