Использование Mon goose запроса вне функции exe c - PullRequest
0 голосов
/ 30 апреля 2020

Я пытаюсь использовать результат запроса вне функции exe c, но я не могу заставить его работать

Это моя функция в Express

getUrlsFromDatabase = function(){
  blog.find()
  .select('url')
  .exec(function(err,docs){
    var sitemap = [];
    for(var i=0; i<docs.length; i++) {
      sitemap.push(docs[i].url);
    }
    return sitemap
  })
  console.log("Trying to get result docs here")
}

1 Ответ

0 голосов
/ 07 мая 2020

Попробуйте использовать async / await

getUrlsFromDatabase = async function(){

  var blogs = await blog.find().select('url')

  var sitemap = [];

  for(var i=0; i<docs.length; i++) {
    sitemap.push(docs[i].url);
  }

  return sitemap 

  console.log("Trying to get result docs here")
}

Обновление:

Или просто добавьте возврат к некоторому результату из функции

getUrlsFromDatabase = function(){
 return blog.find() // <- add return here
  .select('url')
  .exec(function(err,docs){
    var sitemap = [];
    for(var i=0; i<docs.length; i++) {
      sitemap.push(docs[i].url);
    }
    return sitemap
  })
  console.log("Trying to get result docs here")
}

Или просто сохраните его в переменной:

getUrlsFromDatabase = function(){
 const result = blog.find() // <- add variable here
  .select('url')
  .exec(function(err,docs){
    var sitemap = [];
    for(var i=0; i<docs.length; i++) {
      sitemap.push(docs[i].url);
    }
    return sitemap
  })
  return result // to return it outbound
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...