我有一个使用AWS Amplify构建的Reaction原生应用程序.在这里,我有一个自定义身份验证流,创建一个Cogito用户和一个发布确认lambda触发器,创建一个真正的DynamoDB用户.但当我想在我的应用程序主屏幕中查询这个真实用户时,问题就出现了.目前我是这样做的,我首先从Cogito获得当前认证的用户,然后从收到的数据中查询真实的数据库用户,但有时一开始这无法获得用户,但当我刷新屏幕时,我会得到用户.我想知道做这件事最好的方法是什么?
我的代码是,
import { Auth } from "aws-amplify";
import { DataStore} from '@aws-amplify/datastore';
import { User } from "../src/models";
const [user , setUser] = useState <User[]>([]);
const [ready, setReady] = useState(false);
const getUser = async () => {
try{
const userData = await Auth.currentAuthenticatedUser();
const currentUserPhone = userData.attributes.phone_number
if(currentUserPhone){
await DataStore.query(User, d => d.Phonenumb("eq", currentUserPhone)).then(setUser);
console.log("getting user in home");
setReady(true);
} else{
setReady(false);
}
} catch(e){
setReady(false);
console.log(e)
}
}
useEffect(() => {
getUser();
}, []);
return(
<View>
{ready === true &&(<Text>Hello {user?.name}</Text>)}
{ready === false &&(<Text>No user</Text>)}
</View>
)