javascript - React Native 和 Reactotron 中 RealmDB 对象的问题
问题描述
我在 React Native 项目中遇到了 RealmDB 对象的问题,我对 RealmDB 执行的每个查询都会返回 reactotron 中的空对象数组,{}
并且如果我尝试使用 rest/spread 运算符。但是,当我按属性访问属性时。有人遇到同样的问题并设法解决了吗?PS:我已经在项目中链接了领域和reactotron
关于我所描述的图像
Reactotron:https ://i.stack.imgur.com/OhN1D.png 代码:https ://i.stack.imgur.com/gsNwk.png
我尝试发现问题的一段代码示例:
async getAllMov(){
try{
const realm = await getRealm();
const listaMov = realm.objects(MovSchema.schema.name);
console.tron.log(listaMov[4]);
const d = {...listaMov[4]};
console.tron.log(d);
let dados = {
movID: listaMov[4].movID,
titulo: listaMov[4].titulo,
descricao: listaMov[4].descricao,
valor: listaMov[4].valor,
tipo: listaMov[4].tipo
};
console.tron.log(dados);
}catch(e){
console.tron.log(e.message);
}
}
解决方案
这解决了我的问题,希望对你也有帮助:
export default function getRealmObjects = async (schemaName) => {
const realm = await getRealm();
var objects = realm.objects(schemaName);
//this is because realm put some obstacles when you try to modify it's objects, the solution found was to clone the results before return
let result = [];
for (let i = 0; i < objects.length; i++) {
let item = {};
for (const key in objects[i]) {
item[key] = objects[i][key];
}
result.push(item)
}
return result?.length > 0 ? result : [];
}
基本上你不能修改领域对象,所以你必须在使用前克隆它。
推荐阅读
- javascript - 过滤对象数组,其中对象中的一个字段是数组
- javascript - 验证表单是否已完全提交
- django - Django - 时间场差异
- php - 试图让 PHP 流与 Thawte TLS RSA CA G1 一起工作 - 内部错误
- visual-studio-code - 缺少导入时如何从 VS Code 创建文件
- javascript - 在某些拒绝案例中,我如何打破我的承诺链
- quartz.net - Quartz.net - 我应该手动删除安排为一次性执行的作业吗?
- python - 如何对同一文本样本中的不同主题/方面进行情感分析
- android - WearOS 中 SensorManager 的问题
- sql - 02298. 00000 - “无法验证 (%s.%s) - 未找到父键”