同じ点名を読み込まないようにしないといけない。
firebaseのwhere文で絞り込んで検索しているとフリーズしてしまう。
そこでまずFirebaseを利用せずに重複チェックの処理を入れるように修正
async addSimaStakes(simaFile: File, userId: string, fieldId: string, { isOnFieldCreate }: { isOnFieldCreate: boolean }) {
const simaStakes = await this.getStakesFromSimaFile(simaFile, userId)
const saveStakes: IStakeEntity[] = []
const saveStakeNames: string[] = []
const notImportedStakes: IStakeEntity[] = []
//新規作成処理
const comparedStakeNames = isOnFieldCreate
? saveStakeNames
: (await this.stakeEntity.getStakesOnce(fieldId))
.map(stake => stake.name)
//重複していなければisValidにtrueが返却
simaStakes.forEach(simaStake => {
const isValid = isOnFieldCreate
? this.validateSimaStakeOnFieldCreate(simaStake, comparedStakeNames)
: this.validateSimaStakeOnFieldUpdate(simaStake, comparedStakeNames)
if (isValid) {
saveStakes.push(simaStake)
saveStakeNames.push(simaStake.name)
} else {
notImportedStakes.push(simaStake)
}
})
await this.stakeEntity.addStakes(fieldId, saveStakes, { runValid: false })
return { notImportedStakes }
}
なんとか4月中にはリリースしたい。
ご連絡、質問は、Facebook よりお願いいたします。