0

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

我不知道在哪里看。

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

如何调试它?

谢谢。

抄送

4

1 回答 1

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

我已经从我的订阅查询中删除了createdAtandupdatedAt我没有任何错误并且在创建照片后我得到了正确的响应。

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

于 2020-10-19T15:59:05.860 回答