У меня есть это приложение node.js, которое извлекает данные из метро из mongodb, используя mongoose, и после получения данных я передам его sphere-knn для вычисления ближайших точек. Странная вещь случается в var lookup = sphereKnn(d1);
, если я передаю d1
, который является жестко закодированным массивом, код будет работать, если я передам data
, который извлекается из mongodb, он вообще не работает и возвращает пустой массив в качестве результата.nodejs: проблема с массивом javascript
JSON.stringify(data) == JSON.stringify(d1)
напечатает true
, Array.isArray
также напечатает true
для обоих d1
и data
, console.log
покажет есть данные внутри переменной data
.
Я смущен поведением кода. Я пришел из .net и новичок в node.js. я пропустил какую-либо важную концепцию здесь?
mrtStop.find({}, {_id:0}, function(err, data){
if(err){
return res.json(err);
}
// data returned from mongodb, get first one
data = data.slice(0,1);
// hard coded data
var d1 = [{"id":"EW6",
"name":"EXAMPLE MRT STATION",
"lat":1.3210355412,
"lon":103.9129310102,
"__v":0}];
console.log(JSON.stringify(data));
console.log(JSON.stringify(d1));
// print true
console.log(JSON.stringify(data) == JSON.stringify(d1));
// d1 works, but data won't work
// var lookup = sphereKnn(d1);
var lookup = sphereKnn(data);
var points = lookup(req.query.lat, req.query.lon, maxNum);
res.json(points);
});
Вы можете показать все свои результаты в журнале? –
Вы пробовали 'sphereKnn [данные [0]]'? –
console.log данные и дайте мне знать? –