放大GraphQL订阅返回null

时间:2020-10-19 12:01:00

标签: graphql aws-amplify amplify

我有一个应用使用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

我不知道要看哪里。

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

如何调试它?

谢谢。

抄送

1 个答案:

答案 0 :(得分:0)

进行一些挖掘后,我尝试在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自动生成的,所以我不知道该如何永远解决它,每次被放大时都不会被强制修改。