Почему та же самая функция async / await работает где-то, а не где-то еще? - PullRequest
0 голосов
/ 27 апреля 2019

Иногда код сводит вас с ума, потому что вы знаете, что ответ должен быть простым.

Рассмотрите эту рабочую функцию (я использую firestore):

async function getHousing(id) {
  const housing = await db
    .collection('HOUSINGS')
    .doc(id)
    .get()
    .then(doc => {
      if (!doc.exists) logger.debug('No such housing')
      return doc.data()
    })
    .catch(e => {
      logger.error(e)
      return
    })
  return housing
}

module.exports.getHousing = getHousing

Когда я использую его где-то, requiring соответственно, он работает как шарм , иначе ошибки:

const { getHousing } = require('../models/housing')

async function getHousings(user) {

  ...

  for (let house of allowedHousings) {
    let housing = await getHousing(id)    
  }

  ...

  return someStuff
}

Однако, когда я использую его где-то еще, требуетсяточно так же я получил ошибку: error: getHousing is not a function

const { getHousing } = require('../models/housing')

async function saveProp(data) {
  try {
    await db
      .collection('PROPS')
      .doc(data.ID.PROP)
      .set(data)

    // data.ID.HOUSING is the correct ID
    const housing = await getHousing(data.ID.HOUSING)

    return housing
  } catch (e) {
    logger.error(e)
  }
}

Я действительно не понимаю, почему.Есть ли у вас какие-либо подсказки?Спасибо

РЕДАКТИРОВАТЬ: На самом деле, когда я переключаюсь на другую асинхронную функцию, работающую также где-то (saveHousing()), она больше не работает на saveProp() fn ... Странно, но не помогаетя отлаживаю это ...

1 Ответ

0 голосов
/ 28 апреля 2019

После нескольких попыток отладки ... Я нашел ответ, функции работают отлично, но была какая-то круговая зависимость со всеми моими require().

После перемещения const { deleteProp } = require('../models/prop') внутри функции, а не вверху файла, она работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...