TypeError: Невозможно прочитать свойство 'then' из undefined в моей пользовательской функции - PullRequest
0 голосов
/ 30 декабря 2018

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

Он показывает ошибку:

TypeError: Невозможно прочитать свойство 'then' из неопределенного

dbGetDate.js

const dbGetData = (store, col, doc, col2, doc2) => {
    store.firestore.collection(col).doc(doc).collection(col2).doc(doc2).get().then(data => {
            if (data.exists) {
                return new Promise((resolve, reject) => {
                    if(data.data() != null){
                        resolve(data.data());
                    }
                else{
                    reject("Some error in fetching data");
                }

            })

        }
        else {
            return new Promise((resolve, reject) => {
                reject("not such data in record");
            })
        }
        }
    ).catch(function (error) {
        return ("Ops, there should be an error");
    });
}
export default dbGetData;

myPage.js

componentWillMount(){
        const dbStore = dbConnect;
        dbGetData(dbStore, 'Test', '123', 'Member','001')
        .then(data => {
            console.log(data);
            this.setState({
                firebaseData : data
            })
        });

}

1 Ответ

0 голосов
/ 30 декабря 2018

Причина, по которой вы получаете эту ошибку, в том, что функция dbGetData ничего не возвращает, поэтому результат ее вызова равен undefined.Если вы хотите вернуть обещание, вам нужно создать обещание на верхнем уровне:

 const dbGetData = (store, col, doc, col2, doc2) => {
   const promise = new Promise((resolve, reject) => {
     // ... do stuff
   });

   return promise;
 };
...