Вы можете использовать атрибуты объекта события и данных:
function ShowHide(input) {
// If you don't want the form to refresh the page, use preventDefault
event.preventDefault();
// Using dataset you can access the data attributes from the button that fired the event
document.getElementById(event.target.dataset.divid).style.display = "block";
}
<div id="main">
<form >
<fieldset>
<button onclick="ShowHide()" data-divid="1">Area 1</button> <!- Add data attributes to your buttons ->
<button onclick="ShowHide()" data-divid="2">Area 2</button>
</fieldset>
</form>
</div>
<div id="1" style="display:none">
Area 1
</div>
<div id="2" style="display:none">
area 2
</div>
Вы можете сделать что-то подобное ниже:
Rest.aggregate([
{
$geoNear: {
near: {
type: "Point",
coordinates: [parseFloat(req.body.lng), parseFloat(req.body.lat)]
},
maxDistance: 100000,
spherical: true,
distanceField: "dist.calculated"
}
},
{
$project: {
rest_status: 1,
rest_address: 1,
rest_name: 1,
rest_contact: 1,
rest_photo: 1,
rest_menu: 1,
rest_avg_rating: 1
}
}
//even you can add limit skip below , if u need
,{$limit:<Number>},
{ $skip: <Number>}
]
//depends on your mongo version you may need to set cursor as well.
,
{ cursor: { batchSize: <Number or keep 0> } }
)
.then()
.catch();
Примечание: перед выполнением запроса убедитесь, что вы добавили индекс 2dsphere
в поле dist.calculated
в случае аггегата $project
используется для того, что вы хотите сделать с .select
вместо использования .near()
, я использовал $geoNear
[ 1112].
Если вы хотите использовать предельный пропуск, вы можете последовать примеру, другие мудрые могут удалить это.
Вы также можете добавить поля distanceMultiplier
и includeLocs
в зависимости от ваших требований.
выше, зависит от версии mongoDB, которую вам может понадобиться использовать cursor
в совокупности.
если нет, вы можете идти вперед без использования cursor
.
Надеюсь, это поможет.
Если вы все еще получаете ошибку, пожалуйста, прокомментируйте.