Closed15

Variable 'Id' has coerced Null value for NonNull type 'String!'

tkttkt
val query = GetSamplePostQuery
    .builder()
    .id("xxxxxxxx")
    .timestampMs(999999)
    .build()

こんな感じで書いたら

Variable 'Id' has coerced Null value for NonNull type 'String!'

これで怒られた

tkttkt

aws appsync の方から直接叩いてみて取得できるかみる

tkttkt
type UpperCamelCaseLog @model @key(fields: ["Kind", "TimestampMs"]) {
  Id: ID!
  Kind: String!
  TimestampMs: Float!
  Content: String!
}

これを作って build すると、すごい怒られる

なぜか id が2回定義されている
field に id がなかったら id を作成する、みたいな挙動でもしてるのかな

tkttkt

なぜか id が2回定義されている
field に id がなかったら id を作成する、みたいな挙動でもしてるのかな

これであってそう

Id のフィールドを消しても id が作られた

CreateUpperCamelCaseLogInput(Input<String> id, @Nonnull String kind, double timestampMs,
    @Nonnull String content) {
  this.id = id;
  this.kind = kind;
  this.timestampMs = timestampMs;
  this.content = content;
}
tkttkt

Id のフィールド消して再チャレンジ

private suspend fun get(kind: String, timestampMs: Double) : GetUpperCamelCaseLogQuery.GetUpperCamelCaseLog? {
    val query = GetUpperCamelCaseLogQuery
        .builder()
        .kind(kind)
        .timestampMs(timestampMs)
        .build()
    return suspendCoroutine { continuation ->
        client.query(query).responseFetcher(NETWORK_FIRST).enqueue(object :
            GraphQLCall.Callback<GetUpperCamelCaseLogQuery.Data>() {
            override fun onFailure(e: ApolloException) {
                throw e
            }
            override fun onResponse(response: Response<GetUpperCamelCaseLogQuery.Data>) {
                if (response.errors().size > 0) {
                    continuation.resumeWithException(Exception(response.errors().toString()))
                    return
                }
                val result = response.data()!!.upperCamelCaseLog
                continuation.resume(result)
            }
        })
    }
}

いつか見たエラー

java.lang.Exception: [Error{message='Variable 'Kind' has coerced Null value for NonNull type 'String!'', locations=[Location{line=1, column=28}], customAttributes={}}]

やっぱり UpperCamel のときにバグるっぽい

tkttkt


get をそのまま使うやつだけ落ちる
list の中で get と同じ条件で filter してあげると通る

このスクラップは2021/04/16にクローズされました