我试着在DataStore中查询用户的subId,我知道它在那里,但是每当我尝试这样做时,我都会收到一条错误消息:可能未处理的Promise拒绝(id:0)TypeError:对象不是函数。
很抱歉我无法键入代码,因为Stackoverflow一直告诉我的帖子似乎包含的代码格式不正确,我应该使用代码工具栏按钮将所有代码缩进4个空格,我不知道如何做到这一点。我刚上传了一张照片。Photo of my code
import { createContext, useState,useEffect, useContext } from "react";
import {Auth, DataStore} from 'aws-amplify';
import { User } from "../models";
const AuthContext = createContext({})
const AuthContextProvider = ({children})=>{
const [authUser, setAuthUser] = useState(null)
const [dbUser, setDbUser] = useState(null)
const sub = authUser?.attributes?.sub;
useEffect(()=>{
Auth.currentAuthenticatedUser({bypassCache: true}).then(setAuthUser)
},[]);
useEffect(()=>{
DataStore.query(User, (user)=>user.sub("eq", sub)).then((users)=>setDbUser(users[0]))
}, [sub])
return(
<AuthContext.Provider value={{authUser, dbUser, sub, setDbUser }}>
{children}
</AuthContext.Provider>
)
}
export default AuthContextProvider;
export const useAuthContext = ()=> useContext(AuthContext)
1条答案
按热度按时间fdbelqdn1#
因此,显然有一些新的东西称为“AWS Amplify DataStore的延迟加载和嵌套查询 predicate ”。它是语法的变化从:之前:数据存储。query(Post,p =〉 www.example.com ('eq ',' 123'))现在:query(Post,p =〉p.id.eq('123 '))
所以,在我的情况下,它是: