Результат функции запроса Firestore недействителен

#javascript #typescript

#javascript #typescript

Вопрос:

Функция validateBusinessId выдает пустую переменную businessExists. Я пытаюсь назначить разные пути к базе данных в зависимости от того, существует ли бизнес в базе данных или загруженный файл является основным файлом. Функция validateBusiness выдает результат void. Не уверен, как это исправить. Где я ошибся?

 async function validateBusinessId(businessId: string) {
    db.collection('business').doc(businessId).get()
    .then((docSnapshot) => {
        if (docSnapshot.exists) {
            return true
        } else {
            return false
        }
    })
}

async function getDatabase(fileName: string, businessId: string) {
    const businessExists = await validateBusinessId(businessId)

    if ((fileName) amp;amp; (fileName?.includes('masterFile'))) {
        console.log('A new Master database file has been detected.')
        return db.collection('products')
    } else if ((businessId) amp;amp; (businessExists)) {
        // If the business exists, return business path
        console.log('A new database file has been detected for business: '   businessId)
        return db.collection('business').doc(businessId).collection('products')
    } else {
        return null
    }
}
  

Помощь высоко ценится!

Ответ №1:

Хорошо, итак, я обнаружил, что неправильно обработал обещание результата запроса. Вот код, который сработал для меня.

 async function validateBusinessId(businessId: string) {
    const databaseDocumentSnapshot = await db.collection('business').doc(businessId).get()

    if (databaseDocumentSnapshot.exists) {
        return true
    } else {
        return false
    }
}

async function getDatabase(fileName: string, businessId: string) {
    const businessExists = await validateBusinessId(businessId)

    if ((fileName) amp;amp; (fileName?.includes('masterFile'))) {
        console.log('A new Master database file has been detected.')
        return db.collection('products')
    } else if ((businessId) amp;amp; (businessExists)) {
        return db.collection('business').doc(businessId).collection('products')
    } else {
        console.log('No business with such ID exists: '   businessId);
        return null
    }
}