"Location"필드가있는 모델 이벤트가 있습니다."거리"를 위치 목록에 삽입하는 방법
우리가 원하는 것은 : 위도/경도 좌표 근처의 검색어가 주어지면 목록의 각 결과에 distance
이라는 입력란이 있습니다. 즉 제공된 좌표에서 location.geo
까지의 거리를 킬로미터 단위로 표시해야합니다. 결과 세트의 각 오브젝트
KeystoneJS 위치 유형 정의에는 underscore methods for this이 있습니다.
그러나이 결과를 목록의 각 결과에 대해 "가상"으로 주입하는 방법을 알 수 없습니다.
요청 된 Lat/Lon을 해당 밑줄 방법으로 전달하고 결과 목록에 채우는 방법에 대한 아이디어가있는 사람이 있습니까?
var q = Event.paginate({ page: req.query.page || 1, perPage: req.query.max || 20 })
.where('eventDate').gt(since)
.where('state').equals('published')
.sort("eventDate")
if (req.query.lon && req.query.lat) {
var coords = [req.query.lon, req.query.lat];
var maxD = (req.query.maxDistance || 5)/6371;
q = q.where('location.geo')
.near({ center: coords, maxDistance: maxD, spherical:true })
}
q.exec(function(err, items) {
if (err) return res.apiError('database error', err);
res.apiResponse({
events: items
});
});
답변 해 주셔서 대단히 감사합니다. 또한이 문제의 일부분이'.paginate' 함수라고 생각하고 있습니다.이 함수는 목록 항목을 Model 객체로 반환하지 않기 때문에'items.results' 객체의 객체를 반복 할 때 내 모델 메소드가 작동하지 않습니다. 더 깊이 파고들 필요가 있습니다. –