Blog

simデータ読み込み処理

同じ点名を読み込まないようにしないといけない。

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 よりお願いいたします。