我有一个应用使用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
我不知道要看哪里。
在订阅中收到空值的原因可能是什么?
如何调试它?
谢谢。
抄送
答案 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
我已从订阅查询中删除了createdAt
和updatedAt
,并且没有任何错误,并且在创建照片后得到了正确的回复。
问题是我的订阅文件是由amplify自动生成的,所以我不知道该如何永远解决它,每次被放大时都不会被强制修改。