0

我正在开发我的 react-app,我现在正在使用 react-redux-firebase。按照步骤。我想让它同步并使用 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
            })
        });

}
4

1 回答 1

1

您收到该错误的原因是该函数dbGetData不返回任何内容,因此调用它的结果是undefined. 如果你希望它返回一个 Promise,你必须在顶层创建 Promise:

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

   return promise;
 };
于 2018-12-30T10:04:47.307 回答