React Native 如何在DataStore中查询subid而不会得到错误Possible unhandled Promise rejection object is not a function

yiytaume  于 2023-05-01  发布在  React
关注(0)|答案(1)|浏览(133)

我试着在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)
fdbelqdn

fdbelqdn1#

因此,显然有一些新的东西称为“AWS Amplify DataStore的延迟加载和嵌套查询 predicate ”。它是语法的变化从:之前:数据存储。query(Post,p =〉 www.example.com ('eq ',' 123'))现在:query(Post,p =〉p.id.eq('123 '))
所以,在我的情况下,它是:

useEffect(()=>{
        DataStore.query(User, (user)=>user.sub.eq(sub)).then((users)=>setDbUser(users[0]))
    }, [sub])

相关问题