MongoDB 领域初始订阅现在可以在 React Native 中正常工作

问题描述 投票:0回答:0

我正在开发第一个离线应用程序,我想添加初始订阅,如此处所示https://www.mongodb.com/docs/realm/sdk/react-native/sync-data/flexible-sync/# std-label-react-native-sync-subscribe-to-queryable-fields

这是领域版本10.18.0

所必需的

现在在我的 React Native 应用程序中添加它之后,应用程序不断切换回 Fallback,当我删除初始订阅的代码时,应用程序加载良好。不知道有没有我做的不好

import React from "react";
import { ActivityIndicator } from 'react-native'
import { createNativeStackNavigator } from "@react-navigation/native-stack";
import { RootStackParamList } from "./types";
import { Splash, Onboarding, Login } from "../screens";

import BottomNavigator from "./BottomNavigator";
import DrawerNavigator from "./DrawerNavigator";
import { UserProvider } from "@realm/react";
import { realmContext } from "../realm/realm";
import { DEVICE_HEIGHT, DEVICE_WIDTH } from "../constants/sizes";
import { RootState, useAppSelector } from "../redux/store";

const Stack = createNativeStackNavigator<RootStackParamList>();

const { RealmProvider } = realmContext;

const FallBackNavigator = () => {
  const { Screen, Navigator } = Stack;
  return (
    <Navigator
      initialRouteName="Splash"
      screenOptions={{
        headerShown: false,
      }}
    >
      <Screen name="Splash" component={Splash} />
      <Screen name="Login" component={Login} />
    </Navigator>
  );
};

const MainNavigator = () => {

  const userData: any = useAppSelector((state: RootState) => state.auth.user)

  const { Screen, Navigator } = Stack;

  return (
    <UserProvider fallback={<FallBackNavigator />}>
      <RealmProvider sync={{
        flexible: true,
        initialSubscriptions: {
          update: (subs, realm) => {
            subs.add(realm.objects('courses').filtered('admin_id = $0', userData.authID),{
              name: 'coursesSubscription',
            })
            subs.add(realm.objects('coursedetails'),{
              name: 'coursesdetailsSubscription',
            })
          },
        },
      }}
        fallback={() => <ActivityIndicator size={'large'} style={{ position: 'absolute', zIndex: 999, top: DEVICE_HEIGHT * 0.5, left: DEVICE_WIDTH * 0.46 }} />}
      >
        <Navigator
          initialRouteName="Splash"
          screenOptions={{
            headerShown: false,
          }}
        >
          <Screen name="Splash" component={Splash} />
          <Screen name="Onboarding" component={Onboarding} />
          <Screen name="DrawerNavigator" component={DrawerNavigator} />
          <Screen name="BottomNavigator" component={BottomNavigator} />
        </Navigator>
      </RealmProvider>
    </UserProvider>
  );
};

export default MainNavigator;

我也已经将 admin_id 添加到 MongoDB 领域站点的 App services 中的可查询字段。

mongodb react-native realm
© www.soinside.com 2019 - 2024. All rights reserved.