0
私はこのループを数日間は困惑していました。配列内のオブジェクトに新しい要素を追加する
検索結果の配列(mdb_results
)をループし、各オブジェクトから.name
を抽出し、Google CSEイメージ検索で_search
という用語として使用します。
Th CSEは、_search
という用語(mdb_results[i]
)を抽出したオブジェクトに追加したい別の配列(cse
)を返します。
router.get('/json', function(req, res, next) {
var ImageSearch = require('node-google-image-search');
MongoClient.connect(url, function(err,db){
db.collection('mycatalog')
.find({$text: {$search:"FOO" }})
.toArray(function(err, mdb_results){
for (var i=0; i<mdb_results.length; i++){
var _search = mdb_results[i].name ;
ImageSearch(_search, function(cse){
// How to add cse.img to mdb_results[i].images ??
// mdb_results[i].images = cse;
// gives undefined
},0,2);
};
res.send(mdb_results);
});
});
});
私の初期mdb_results
はこのように見えます。
[{"name":"FOO"},{"name":"FOOOO"}]
、
[{"name":"FOO",
"images":[{"img1":"http://thumbnail1"},{"img2":"http://thumbnail2"}]
},
{"name":"FOOOO",
"images":[{"img1":"http://thumbnaila"},{"img2":"http://thumbnailb"}]
}]
誰もがこれを達成するためにどのように私を見ることができますか?あなたが約束またはasyncライブラリを使用する必要があるとしている
router.get('/json', function(req, res, next) {
var ImageSearch = require('node-google-image-search');
MongoClient.connect(url, function(err,db){
db.collection('mycatalog')
.find({$text: {$search:"FOO" }})
.toArray(function(err, mdb_results){
for (var i=0; i<mdb_results.length; i++){
var _search = mdb_results[i].name ;
// This search is asynchronous, it won't have returned by the time
// you return the result below.
ImageSearch(_search, function(cse){
// How to add cse.img to mdb_results[i].images ??
// mdb_results[i].images = cse;
// gives undefined
},0,2);
};
// At this point, ImageSearch has been called, but has not returned results.
res.send(mdb_results);
});
});
});
:
おかげ
:
は、ここでの例です。 'cb'で何が起こっているのか少し詳しくお考えですか?それにもかかわらず、私は何が起こっているのか理解するのに苦労しています。 – Colin
私は精巧にしようとするために投稿を更新しました。 NodeJSでコールバックがどのように機能するかを理解することは、ここで何が起こっているのかを理解する上で非常に重要です。コールバックは、作業が終了したことを示すために使用されます。 – EmptyArsenal
注釈をありがとう。私はまだ自分自身の呼び出しであると思われる 'return callback()'と闘っていますか?私たちは 'callback'を囲み関数に渡し、' callback'のための関数定義なしでそれを呼び出します。答えが複雑すぎてコメントできない場合は、自分で教えることができるリソースをおすすめできますか? – Colin