Firestore将部分数据存储到文档

时间:2019-07-30 13:06:06

标签: reactjs firebase google-cloud-firestore

我在将数据保存到Firestore时遇到问题。我正在传递要保存到文档的URL列表。

data sent in the following format

但是它只保存第一个数据 firestore data

可能是什么问题?请帮忙。

更新按钮点击处理程序

handleUpdate=()=>{
        const promises = [];
        let files=[];
        const {fileURLs,sp_License,sp_PilotsLicense}=this.state;

        let err = this.validate();
        if (!err) {
           this.setState({ loading: true,disChecked:false })

            // const Lfilename = this.state.sp_Name + '_' + new Date().getTime();
            //     const uploadTask = storage.ref('License/' + Lfilename).put(sp_License);

             let orgFile='';

            const promise1=this.uploadTaskPromise().then((res)=>{
               console.log(res)
               orgFile=res
            });
            promises.push(promise1)
            console.log(orgFile)

            //promises.push(this.uploadTaskPromiseMulti());
            const promise2=this.uploadTaskPromiseMulti().then((res)=>{
                console.log(res)
                files=res
             });
             promises.push(promise2)
             console.log(promise2)


                Promise.all(promises).then(tasks => {
                    console.log('all uploads complete');
                    console.log(this.state)
                    if(this._mounted)
                    {
                        //this.saveData();
                        //console.log(orgFile.data)
                        this.setState({ 
                            fileURLs: files, -- here fileurls gets updated
                            sp_License:orgFile,
                        },()=>{
                            console.log(this.state)
                            this.saveData();
                        });
                    }

                });

        }
    }

saveData方法的代码-我正在使用React Redux Firebase方法保存数据

saveData=()=>{
        let uid = this.props.auth.uid;
        let keysToRemove = ["loading", "checked", "disChecked", "open", "message",
        "sp_NameError", "sp_PhoneError", "sp_emailError", 'usr_org_LicenseNumberError', 
        'sp_LicenseError','usr_org_StateConveredError','usr_org_DistConveredError',
        'sp_NumberofEquipmentsError','sp_NumberofDronePilotsError','sp_PilotsLicense',
        'sp_NumberofEquipmentsOwnedError','sp_ToolError','processingToolServiceError',
        'processingToolDomainError','modalopen','EquipmentCount',
        'PilotsCount','buttonName','isReady','redirect']
       let newState = Object.entries({...this.state}).reduce((obj, [key, value]) => {
         if(!keysToRemove.includes(key)){
             obj[key] = value
         }
         return obj
        }, {})
       console.log(newState)

        this.props.UpdateUserDetails(uid, newState,this.successMessage)

    }

动作代码

export const UpdateUserDetails= (id, droneSPDetails,func) => {
    return (dispatch, getState, { getFirestore }) => {
        const firestore = getFirestore()
        firestore.collection('web_Users')
            .doc(id)
            .set({
                 ...droneSPDetails,
                sp_UpdatedOn: new Date(),
                //sp_Status:"pending",
                sp_ActiveFlag:"1",
            },{ merge: true })
            .then(() => {
                func();
                dispatch({ type: 'CREATE_DRONESP', droneSPDetails });

            })
            .catch((error) => {
                console.error("Error adding document: ", error);
            });
    }
}

0 个答案:

没有答案