我有一個問題已經花了我幾天,我完全不明白它。我使用node.js,並有一個mongodb,它們的座標爲索引。我證實,索引工作正常。對於一組座標,我想找到最近的地方。以下是我試圖去了解它:RangeError當試圖用貓鼬/ mongodb本地執行mongodb查詢
var Places = require(./models/places.js),
coordFinder = require('./coordFinder.js');
...
function getCoords(userId, callback) {
coordFinder.getCoords(userId, function(err, coords) {
if (err) {
callback(err);
} else {
callback(null, coords);
}
}
}
function getNearestPlaces(coords, callback) {
async.forEachSeries(
coords,
function(coord, done) {
Places.findOne(
{ coordinates: { $near: [ coord.lat, coord.lon ] } },
function(err, place) {
// do something with place
done();
}
)
},
function(err) {
callback(err ? err : null);
}
);
}
...
async.waterfall(
[
...
getCoords,
getNearestPlaces,
...
],
function(err) {
...
}
}
MongoDB的查詢始終失敗,第一個查詢以下錯誤信息:
RangeError: Maximum call stack size exceeded
當我改變getNearestPlaces
查詢到
... { $near: [ 10, 10 ] } ...
我始終沒有錯誤和正確的地方。如果我避免調用coordFinder
在getCoords
和改變getCoords
到
function getCoords(userId, callback) {
callback(
null,
[
// some coordinates
]
);
我知道錯誤指示堆棧溢出(增加堆棧的大小並沒有幫助),但我無法弄清楚如何我同樣的情況,可能導致了一個。有沒有人知道爲什麼發生這種情況?提前感謝您的見解!
編輯:它使用時mongodb-native
直接的方式,所以mongoose
似乎不是問題得到了同樣的問題。還有一個線索 - 使用相同的查詢從不給我一個問題,當我不從回調中調用它。這可能是錯誤的根源嗎?
我使用
- 的node.js 0.6.14
- mongodb的2.2.2
- 節點模塊異步0.1.22
- 節點模塊的mongodb 1.2.5
- 節點模塊貓鼬2.5 .7
乾杯, Georg
你使用地理空間索引嗎? –
是的,我願意。過去工作得很好,並且在執行mongo shell的查詢時工作正常。 – BumbleGee
這個失敗時,coords數組中有多少個元素? – JohnnyHK