外部のJSONフィードからデータをスクラップしてmongoDBに格納しようとしています。mongoose findoneコールバックスコープ(NodeJS、express)
request(url, function (error, response, body) {
if (!error && response.statusCode == 200) {
var jsonObj = JSON.parse(body);
// console.log(jsonObj.events[1].id) <-- this works
for (var i = 0; i < jsonObj.events.length; i++) {
// add jsonObj.events[i] as a new record to table
// console.log(jsonObj.events[i].id) <-- this works
Wnet.findOne({ id : jsonObj.events[i].id }, function (err, doc){
if (err || doc == null) {
// console.log(jsonObj.events[i].id) <-- this doesn't work!
// record is new, add it
}
});
}
}
});
お知らせconsole.log
文...(.findOne
のコールバック内の)最後のものは動作しません。
私はまだJavaScriptのことを学んでいますが、これはスコープの問題だと思います...コールバック関数はjsonObjを知らないです。しかし、私はそれを関数に渡す方法を知らない。
私は一歩踏み出して、レコードの存在をコレクションでチェックしようとしています。見つからない場合は、取得したJSON配列のレコードを追加します。それを行うより良い方法があれば、私はそれを見つけるのにあなたの助けが大好きです。
ありがとうMarshall!それは素晴らしい説明です。私を真っ直ぐにしてくれてありがとう。 2番目は直ちに意味をなさないので、私は束縛のアプローチも釘付けにしばらく時間をかけます。 – Ghan