Javascript Realm.objects()返回React Native上的空对象

Javascript Realm.objects()返回React Native上的空对象,javascript,react-native,realm,Javascript,React Native,Realm,我正在React Native上测试Realm数据库(在Android上测试),在检索数据时遇到了一些问题 我使用此函数来持久化用户 insertData = async (data) => { await Realm.open({schema: [UserSchema]}) .then( realm => { realm.write(()=>{ realm.crea

我正在React Native上测试Realm数据库(在Android上测试),在检索数据时遇到了一些问题

我使用此函数来持久化用户

insertData = async (data) => {
        await Realm.open({schema: [UserSchema]})
            .then( realm => {
                realm.write(()=>{
                    realm.create('User', {id: '1325487', nickname: "Jack", age: 21});
                })

                realm.close();
            })
            .catch(error => {
                console.log(error);
            });

    }
我正在尝试使用以下方法检索数据:

findAll = () => {
        Realm.open({schema: [UserSchema]})
            .then( realm => {
                let users = realm.objects('User')
                console.log(users)

            }).catch(error => {
                console.log(error);
            })
    }
这就是我得到的,一个空对象数组:

{"0": {}, "1": {}, "10": {}, "11": {}, "12": {}, "13": {}, 
"14": {}, "15": {}, "16": {}, "17": {}, "18": {}, "19": {}, "2": 
{}, "20": {}, "21": {}, "22": {}, "23": {}, "24": {}, "25": {}, "26": {}, "27": {}, "28": {}, "29": {}, "3": {}, "30": {}, "31": {}, "32": {}, "33": {}, "34": {}, "35": {}, "36": {}, "37": {}, "38": {}, "39": {}, "4": {}, "5": {}, "6": {}, "7": {}, "8": {}, "9": {}}
这是用户模式:

const UserSchema = {
    name: 'User',
    properties: {
        id:         'string',
        nickname:   'string',
        age:        'int'
    }
}

我认为数据正在被持久化,因为当我保存不同的用户并使用过滤器时,结果的数量是不同的。你知道为什么只有空的东西出现吗?或者以某种方式查看我的领域数据库中的内容?

您使用的是领域5.0.2还是5.0.1?
如果是担心的话,RealmJS5.0.2上有一个bug


将realm更新到5.0.3版,它应该可以工作

我只需删除节点_模块并重新安装即可谢谢

我也有同样的问题,但当我传递所需属性的名称时,我可以获得值,例如:

user.id
user.nickname
user.age
map.listUser(item => {
   console.log(item.id);
   console.log(item.nickname);
   console.log(item.age);
})
请记住,如果是列表,则必须使用循环扫描阵列,例如:

user.id
user.nickname
user.age
map.listUser(item => {
   console.log(item.id);
   console.log(item.nickname);
   console.log(item.age);
})

对我来说,这解决了获取值的问题​​对象的名称。但是,我仍然看不到日志中的项目。

我还面临着与我遇到的问题相同的问题,在react native中从领域数据库检索数据时,出现了一个空对象数组

我在Android Studio logcat中发现,数据不可见,它看起来像:

{“0”:{},“1”:{},“10”:{},“11”:{},“12”:{},“13”:{},“14”:{},“15”:{},“16”:{},“17”:{},“18”:{},“19”:{},“2”:{},“20”:{},“21”:{},“22”:{}”,“23”:{},“24”:,{},“25”:{,“26”:{},“27”:

但是,您可以在VisualStudio(即终端)中检查logcat 你可以看到结果

结论:有数据响应,无法在Android Studio logcat中看到,但可以在Visual Studio终端中看到。

tl;dr
const virtualUsers=realm.objects('User');
constusers=JSON.parse(JSON.stringify(virtualUsers));
console.log(用户);
解释 领域结果是一个“虚拟”对象 领域结果包含虚拟/代理对象。它们包含对象属性的和,但本身不包含可枚举属性。这就是调试时出现
符号(\u external)
的原因

更多 看

Realm确实在结果对象上定义了一个
toJSON()
函数。这对于将对象强制转换为实际值非常有用

而不是:

let users = realm.objects('User')
使用:

警告
这将带来性能损失。只有在必须使用具有可枚举属性的对象时,才应执行此操作。

您能找到解决方案吗?同样的问题,还没有解决方案:(我只是删除了node_模块并安装了again@AnthonyDeSmet你有什么解决办法吗?@AmilaDulanjana