You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已配置Auth的Amplify如何基于用户sub id实现DataStore选择性数据下载

Amplify DataStore动态按用户sub id同步数据实现方案

实现逻辑

Amplify仅支持全局执行一次configure命令,不需要在初始化阶段就确定同步用的sub id值,利用同步表达式的惰性执行特性即可实现动态按登录用户同步数据:

1. 调整初始化阶段的同步表达式配置

将静态常量取值改为动态获取当前登录用户的sub id,不需要提前写死固定值:

/* 添加Amplify插件 */
Amplify.addPlugin(AWSApiPlugin())
Amplify.addPlugin(AWSCognitoAuthPlugin())

Amplify.addPlugin(AWSDataStorePlugin.builder().dataStoreConfiguration(
    DataStoreConfiguration.builder()
        .syncExpression(Rooms::class.java) { 
            val currentUserSub = Amplify.Auth.currentUser?.userId ?: ""
            Devices.SUB.ge(currentUserSub) 
        }
        .syncExpression(Scenes::class.java) { 
            val currentUserSub = Amplify.Auth.currentUser?.userId ?: ""
            Devices.SUB.ge(currentUserSub) 
        }
        .syncExpression(Devices::class.java) { 
            val currentUserSub = Amplify.Auth.currentUser?.userId ?: ""
            Devices.SUB.ge(currentUserSub) 
        }
        .syncExpression(Automations::class.java) { 
            val currentUserSub = Amplify.Auth.currentUser?.userId ?: ""
            Devices.SUB.ge(currentUserSub) 
        }
        .syncExpression(MasterNodes::class.java) { 
            val currentUserSub = Amplify.Auth.currentUser?.userId ?: ""
            Devices.SUB.ge(currentUserSub) 
        }
        .build()
).build())

Amplify.configure(applicationContext)

2. 登录成功后刷新DataStore同步

如果登录前已经启动过DataStore,登录完成后先清空本地缓存再重启DataStore即可触发新的同步规则生效:

/* 启动DataStore同步 */
Amplify.DataStore.clear(
    {
        Amplify.DataStore.start(
            { Log.i(Constants.TAG_AMPLIFY, "DataStore 启动完成") },
            { error -> Log.e(Constants.TAG_AMPLIFY, "DataStore 启动失败", error) }
        )
    },
    { error -> Log.e(Constants.TAG_AMPLIFY, "DataStore 缓存清空失败", error) }
)

说明

  • 同步表达式仅在DataStore启动执行同步操作时才会计算内部取值,初始化configure阶段不会执行,无需在初始化时就确定sub id的具体值
  • 无需重复执行Amplify的configure命令,所有动态业务逻辑可以放在同步表达式的闭包内实时计算

内容的提问来源于stack exchange,提问作者Zubair Akber

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 05:15:07