领域 - 价值无法转换为数字

时间:2017-03-06 16:54:10

标签: javascript firebase react-native firebase-realtime-database realm

Hello社区:)我使用firebase实现了许多良好的工作功能 - >领域。现在我尝试编辑一个结构,我正在查看最疯狂的错误消息。

什么是正确的:

  • Firebase 发送数据
  • 数据已转换(例如,Firebase已经"品牌"因为数组 - >转换为Realm Schema的字符串)
  • 当firebase 更新
  • 时出现错误
  • 并非每个firebase内容都包含所有字段(例如,您可以从Realm Schema中看到某些字段可选:true)

我可能会遇到问题的字段:

  • 也许不可能说ReferentList是可选的(或者我实现错误):请参阅Realm Schema const ReferentsList

我尝试了什么

  • 在realm.create之前进行调试(领域设置)结果:每个数据的格式都是正确的
  • 检查所有输入值是否为int,string,...

希望有人可以在这里帮助我,因为我完全坚持这个问题,并继续我的项目。我想知道:

  • 解决方案为什么或做什么
  • 以更好的方式调试领域的可能性 提前感谢您的时间和帮助:)

错误讯息: 价值无法转换为数字

Firebase数据结构

  
      
  • "开始" :" 2017-05-15T15:50:00.000Z",
  •   
  • "描述" :" abc",
  •   
  • "端" :" 2017-05-15T16:15:00.000Z",
  •   
  • " ID" :6,
  •   
  • "语言" :[1],
  •   
  • "位置" :" L 1.02",
  •   
  • "部件" :20,
  •   
  • "指涉" :[1,3],
  •   
  • "寄存器" :true,
  •   
  • "标题" :"沉默的声音",
  •   
  • "轨道" :6,
  •   
  • "类型" :3,
  •   
  • "品牌" :[1,2,3]
  •   

Realm Schema



const ReferentListSchema = {
    name: 'ReferentList',
    properties: {
        id: {
            type: 'int',
            optional: true
        }
    }
}

const LanguageListSchema = {
    name: 'LanguageList',
    properties: {
        id: 'int'
    }
}

const EventSchema = {
    name: 'Events',
    primaryKey: 'id',
    properties: {
        id: 'int',
        begin: {
            type: 'date',
            optional: true
        },
        end: {
            type: 'date',
            optional: true
        },
        title: 'string',
        description: 'string',
        register: 'bool',
        member: {
            type: 'int',
            optional: true
        },
        language: {
            type: 'list',
            objectType: 'LanguageList'
        },
        location: 'string',
        referent: {
            type: 'list',
            objectType: 'ReferentList'
        },
        type: 'int',
        track: {
            type: 'int',
            optional: true
        },
        img: {
            type: 'string',
            optional: true
        },
        brands:{
            type: 'string',
            optional: true
        }
    }
}




领域设置



set(obj) {
  realm.write(() => {
      if(obj.referent){
          obj.referent = obj.referent.map(function(id) {
              return {id};
          })
      }
      if (obj.language){
          obj.language = obj.language.map(function(id) {
              return {id};
          })
      }
      realm.create('Events', obj, true);
  });
}




1 个答案:

答案 0 :(得分:2)

解决:! 这个问题通过firebase的错误数据得到了解决。某些日期对象已设置正确。

我如何找到解决方案 当我尝试调试代码时,我做了一个try / catch块:

try{
  realm.create('Events', obj, true);
}catch(error){
  console.log(obj);
  console.log(error);
}

通过这个调试,我找到了错误的正确数据。之前它只是向我显示了所有对象,然后是错误。

我不会关闭这个问题,因为有机会帮助有同样问题的人.-