放大GraphQL订阅返回null

问题描述

我有一个应用使用Amplify和graphQL构建应用。

我已经开始使用此研讨会:https://amplify-workshop.go-aws.com/60_managing_photos/40_upload_photos_consolidated.html

起初效果不错。我已经开始对其进行修改,现在当我上传图片时,订阅返回null。 如果查看数据库,则会看到创建的行。 如果刷新页面,一切正常,没有错误。 我不明白为什么我会得到空值

  useEffect(() => {
    let subscription
    async function setupSubscription() {
      const user = await Auth.currentAuthenticatedUser()
      subscription = API.graphql(graphqlOperation(subscriptions.onCreatePhoto,{owner: user.username})).subscribe({
        next: (data) => {
          console.log('subscriptions.data=',data)

          const photo = data.value.data.onCreatePhoto
          if (photo.albumId !== props.id) return
            setPhotos(p => p.concat([photo]))
        }
      })
    }
    setupSubscription()

    return () => subscription.unsubscribe();
  },[props.id])

console.log('subscriptions.data=',data)的结果是

subscriptions.onCreatePhoto= null

我不知道要看哪里。

订阅中收到空值的原因可能是什么?

如何调试它?

谢谢。

抄送

解决方法

进行一些挖掘后,我尝试在AWS控制台上测试创建和订阅。 而且我在订阅的输出中看到了一些错误:

"errors": [
    {
      "message": "Cannot return null for non-nullable type: 'AWSDateTime' within parent 'Photo' (/onCreatePhoto/createdAt)","path": [
        "onCreatePhoto","createdAt"
      ]

我发现了这个问题https://github.com/aws-amplify/amplify-cli/issues/4613

我已从订阅查询中删除了createdAtupdatedAt,并且没有任何错误,并且在创建照片后得到了正确的回复。

问题是我的订阅文件是由amplify自动生成的,所以我不知道该如何永远解决它,每次被放大时都不会被强制修改。