Node.JS обратный вызов, содержащий массив

// accept a callback function to execute after getting results...
function searchCoords(callback){
  var result = result;
  connection.query('SELECT * FROM monitoring', function(err, result){
    if(err){
      console.log(err);
    }
    // run the callback function, passing the results...
    callback({result: result});
  });
}

// call like this...
searchCoords(function(resultsObject){
    console.log(resultsObject.result)
});

Это мой код, у меня есть анонимная вложенная функция, которая возвращает переменную наружу с помощью функции обратного вызова. Однако возвращаемая переменная (result) - это массив, который мне нужно использовать с googlemaps api в node.js. Как я могу превратить это:

searchCoords(function(resultsObject){
   console.log(resultsObject.result)
});

в переменную, которая будет содержать весь массив, чтобы я мог вызвать его из опции маркеров в API

2 ответа

Хорошо, это был бы код прямо сейчас:

function searchCoords(myCoords){
      var result = result;
      connection.query('SELECT * FROM monitoring', function(err, result){
        if(err){
          console.log(err);
        }
          myCoords.push({result: result});
      });
}

which i call from main.js like this:
function start() {
    var myCoords = {};
    myCoords = database.searchCoords(myCoords);
    console.log(myCoords);
    //otherFunction(myCoords); // This function does stuff with myCoords
}

это близко к решению, которое я пытаюсь получить, но все еще не работает.. вместо этого, консоль показывает

TypeError: Object #<Object> has no method 'push'

Мне нужна простая функция, чтобы взять результат, заданный анонимной вложенной функцией, и превратить его в переменную, которой я могу более легко манипулировать, чтобы я мог добавить его к параметру маркера в API Google Maps API.

Вместо передачи обратного вызова в функцию, почему бы не передать массив, который вы можете добавить?

function start() {
    var myCoords = [];
    searchCoords(myCoords);
    otherFunction(myCoords); // This function does stuff with myCoords

}

function searchCoords(myCoords){
  connection.query('SELECT * FROM monitoring', function(err, result){
    if(err){
      console.log(err);
    }
    else {
      myCoords.push({result: result});
    }
  });
}
Другие вопросы по тегам