首页 > 解决方案 > 为什么 Android Realm 与 MongoDb 同步时不返回任何结果?

问题描述

我正在使用同步的 Android Realm,当我进行基本查询时,它不返回任何项目。

使用以下命令在 build.gradle 中启用同步:

realm {
    syncEnabled = true
} 

在我的片段中(删除了不相关的位):

private var adapter: MenuRealmAdapter? = null
private var realm: Realm? = null
private var menuItems: RealmResults<MenuItem>? = null

override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        realm = App.mongoProxy.getSyncRealm()
}

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?,
                              savedInstanceState: Bundle?): View? {
        val view = inflater.inflate(R.layout.fragment_menu_list, container, false)
        buildAdapter(view, RealmFacade.shared.emptyMenu as RealmResults<IListItem>)
        buildMainMenu()
        return view
}

override fun onDestroy() {
        super.onDestroy()
        menuItems?.removeAllChangeListeners()
        realm?.close()
}

private fun buildMainMenu() {
        menuItems = realm?.where<MenuItem>()?.findAllAsync()
        menuItems?.addChangeListener{ items ->
            // items is empty here //
            adapter?.updateData(items as OrderedRealmCollection<IListItem>)
        }
}

private fun buildAdapter(view: View, menuItems: OrderedRealmCollection<IListItem>) {
        adapter = MenuRealmAdapter(menuItems, mListener, true)
        val realmRecyclerView = binding!!.realmRecyclerView
        realmRecyclerView.layoutManager =
            LinearLayoutManager(view.context)
        realmRecyclerView.adapter = adapter
}

MongoProxy.kt:

fun getSyncRealm (userPartition: Boolean = false): Realm? {

        val user = app.currentUser() ?: return null
        val partitionValue = getPartitionValue(userPartition)
        Log.d(TAG,  "Get realm for userPartition: $userPartition value: $partitionValue")
        val config = SyncConfiguration.Builder(user, partitionValue)
            .waitForInitialRemoteData()
            .build()
        return Realm.getInstance(config)
}

我在 iOS 上运行这个没有问题,所以我知道数据和规则设置得很好,分区值给了我一个合理的值,所以我看不出哪里出错了。

标签: androidrealmrealm-mobile-platform

解决方案


facepalm 时刻 - 我关闭了同步以压缩数据库并忘记将其重新打开 XD


推荐阅读