Как я могу получить объект запроса внутри запроса? - PullRequest
3 голосов
/ 28 мая 2020

У меня есть массив объектов со строкой запроса. I l oop через запрос на основе ключа. Запрос работает должным образом. Но значение ключа не печатается внутри

query = { 
   A: { code: { '$in': ['A'] }},
   B: { code: { '$in': ['B'] }} 
}

for (keyQuery of  Object.keys(query)) {
   console.log("outside",keyQuery );

   testcollection
      .find(query[keyQuery],{_id:0})
      .then(data => {
          console.log("inside",keyQuery);
      });
}

Текущий вывод

outside A
outside B
inside B
inside B

Ожидаемый результат

outside A
outside B
inside A
inside B

Какую ошибку я делаю

1 Ответ

2 голосов
/ 28 мая 2020

Наиболее вероятная причина вашей проблемы - ключевое слово var. Определите keyQuery с ключевым словом let, чтобы оно было ограничено блоком.

for (let keyQuery of  Object.keys(query)) {
   // code
}

Если вы не объявите переменную keyQuery перед ее использованием, она будет объявлена ​​глобально с ключевым словом var .

const testCollection = {
  find() {
    return new Promise((resolve, reject) => {
      setTimeout(() => resolve(2), 2000);
    });
  }
}

const query = { 
   A: { code: { '$in': ['A'] }},
   B: { code: { '$in': ['B'] }} 
}

for (let keyQuery of  Object.keys(query)) {
   console.log("outside",keyQuery );

   testCollection
      .find()
      .then(data => {
          console.log("inside",keyQuery);
      });
}
...