I've been chewing on this for a few days and my solutions smell like 'anti-patterns'. I've been fighting async-ness and come to the conclusion I must be approaching this wrong. Can someone show me a better way?
I perform a mongodb search and return an array (mdb_results).
I want to call Google CSE on each record of mdb_results and append a new element to each Object in mdb_results.
While each call works independently, I'm unable to combine the results.
var MongoClient = require('mongodb').MongoClient;
var ObjectId = require('mongodb').ObjectId;
var url = 'mongodb://***:***@***.mlab.com:***/***';
var searchString = "\""+ 'FOO DOO' +"\"";
var ImageSearch = require('node-google-image-search');
router.get('/', function(req, res, next) {
MongoClient.connect(url, function(err,db){
db.collection('mycatalog')
.find({$text: {$search:searchString }})
.toArray(function(err, mdb_results){
ImageSearch('searchString', function(cse){
mdb_results.forEach(function(mdb){ mdb.thumbs = cse; })
}, 0,2);
res.send(mdb_results);
});
});
});
via Colin
No comments:
Post a Comment