React native React本机领域数据未持久化
我正在使用React native React本机领域数据未持久化,react-native,realm,React Native,Realm,我正在使用realm.write,但是我的default.realm文件没有更新。我还在我的模式中添加了另一个对象,我可以在开发React原生应用程序时使用它,但是default.realm文件没有更新以包含这个新对象 我可以通过在中打开default.realm来确认它没有被保存。另外,在今天早上打开我的mac(昨晚关机后)并运行我的React原生应用程序后,当我试图访问它时,数据不在我的领域中 示例代码: #queries.js import Realm from 'realm' // D
realm.write
,但是我的default.realm
文件没有更新。我还在我的模式中添加了另一个对象,我可以在开发React原生应用程序时使用它,但是default.realm
文件没有更新以包含这个新对象
我可以通过在中打开default.realm
来确认它没有被保存。另外,在今天早上打开我的mac(昨晚关机后)并运行我的React原生应用程序后,当我试图访问它时,数据不在我的领域中
示例代码:
#queries.js
import Realm from 'realm'
// Define your models and their properties
class Car {}
Car.schema = {
name: 'Car',
primaryKey: 'id',
properties: {
id: 'int',
make: 'string',
model: {type: 'string', optional: true}
}
}
class Person {}
Person.schema = {
name: 'Person',
properties: {
id: 'int',
name: 'string'
}
}
// Get the default Realm with support for our objects
let realm = new Realm({schema: [Car, Person], schemaVersion: 3});
class Queries {
async syncCars()
{
try {
let responsePromise = await fetch(`http://api.localhost.com:3000/v1/cars?auth_token=xxx`).catch(function(error) {
console.log('There has been a problem with your fetch operation: ' + error.message);
});
let responseJson = await responsePromise.json();
realm.write(() => {
responseJson.forEach((values) => {
realm.create('Car', values, true);
});
});
}
catch(error) {
console.log("error " + error);
}
}
}
export default new Queries
在我的组件代码中,我有:
import Queries from './queries'
await Queries.syncCars();
正如克里斯蒂安·杜邦(Kristian Dupont)在上面的评论中指出的那样,我看错了文件
接下来,我在Chrome调试器控制台中使用了
realm.path
,并在包含/Library/Developer/CoreSimulator/Devices/
的路径中找到了正确的default.realm
。我不知道为什么OSX finder找不到这个文件。我不确定为什么在我的React Native目录中也创建了一个default.realm
文件,但后来我删除了这个文件以避免混淆,并且没有进一步的问题。我觉得你的代码很好。我假设您已尝试从responsePromise.json()
记录结果,以确保您实际调用的是realm.create()
?我已详细介绍了代码以确保这一点。我应该补充的是,数据是正确创建/存储的(不是在default.realm中,而是在内存中???),我可以通过realm.objects('Car')
获得它。我刚刚搜索了我的计算机,没有其他领域文件(除了sync\u metadata.realm
)。如果我停止并启动iOS模拟器,它甚至会持续存在。重申一下,default.realm
在所有这些之后都不会更新。在数据最终丢失之前,我不确定数据存储在哪里。对于Realm,没有“内存中”这样的东西——当事务完成时,每一次写入都会立即保存到磁盘,因此看起来您查看的文件是错误的。您确定找到了正确的文件吗?有关在哪里可以找到它的更多信息,请查看。谢谢!你说得对。我使用了realm.path
并在包含/Library/Developer/CoreSimulator/Devices/
的路径中找到了另一个default.realm
。我不知道为什么OSX finder找不到这个文件。你知道为什么在我的React原生目录中也创建了一个默认.realm
?它是模式的旧版本,所以可能是在我添加模式版本时创建的?我能删除这个旧版本吗?嗯,我想不出为什么会有这样一个文件。你有没有开玩笑地运行单元测试?