首页 > 解决方案 > 领域 js:访问无效的结果对象

问题描述

我在我的 React 本机应用程序中使用领域,尝试从领域数据库中查询对象列表。

function* loadPlaces() {
    let realm;
    try {
        const filter = yield select(getFilter);
        realm = yield call(Realm.open, {schema: [PlaceSchema]});
        let places = realm.objects(PlaceSchema.name);
        if (filter.search) {
            places = places.filtered("name CONTAINS $0", filter.search);
        }
        switch (filter.sort) {
            case Sort.BY_NAME:
                places = places.sorted('name');
                break;
        }
        yield put(loadPlacesSucceed(places));
    } catch (e) {
        console.warn(e.message);
    } finally {
        if (realm) {
            realm.close();
        }
    }
}

之后,我在 flatlist 中使用结果数据:

<FlatList
        data={this.props.items}
        keyExtractor={(item) => '' + item.id}
        renderItem={({item}) =>
            <PlaceItem item={item} onClick={(item) => this._onItemClicked(item)}/>}/>

并收到错误:

访问无效的结果对象。

如果我删除 realm.close() 错误消失,但我需要在查询后关闭领域。

标签: realmrealm-js

解决方案


为什么你认为你需要在查询后关闭 Realm?如果您关闭您的领域,您将失去对所有自动更新集合的访问权限,例如Results,因此只要您需要访问特定Results实例,就不应关闭您的领域。


推荐阅读