var pagesize = 30;var searchObj = {};lng = ziplist.LONGITUDE;lat = ziplist.LATITUDE;var startpos = req.param('startpos');......lng
Providers.native(function (err, collection) {collection.geoNear(lng, lat, {num:vlimit, // max no of records to return limit: does not workdistanceMultiplier:3959,maxDistance: vmaxDistance/3959,query: searchObj, // filterspherical: true}, function (mongoErr, docs) {if (mongoErr) {console.error(mongoErr);return res.send('geoProximity failed with error=' + mongoErr);} else {var returnCt =docs.results.length;var providers= [];_.forEach(docs.results, function (result) {providers.push(_.extend(result.obj, {dis: result.dis}))});var returnArray = dentists.splice(startpos, pagesize);// push the last record with statsreturnArray.push({ reccount: returnCt});console.log('returnCt=', returnCt);return res.json({ data: returnArray });}});
User.native(function(err, collection) {
collection.geoNear(lng, lat, {
limit: 30,
maxDistance: 1000, // in meters
//query: {}, // allows filtering
distanceMultiplier: 3959, // converts radians to miles (use 6371 for km)
spherical : true
}, function(mongoErr, docs) {
if (mongoErr) {
console.error(mongoErr);
res.send('geoProximity failed with error='+mongoErr);
} else {
console.log('docs=',docs);
// res.send('proximity successful, got '+docs.results.length+' results.');
res.json(docs.results);
}
});
});
var async = require('async');
module.exports.bootstrap = function(cb) {
function updateUserStatus (done) {
User.update({}, {
online: false
},
function userUpdated(err, users) {
if (err) {
console.log(err);
return done(err);
} else {
return done();
}
}
)
}
function geoStuff (done) {
User.native(function (err, collection) {
collection.ensureIndex({ location: '2dsphere' }, function () {
return done();
});
});
}
async.parallel([ updateUserStatus, geoStuff], cb)
};