领域错误:" JS值必须是类型:number"

时间:2017-05-18 05:16:26

标签: javascript realm

我有一个应用程序的原型,运行良好,具有简单的单一方案领域。但是现在我想添加一些其他模式,让一个模式包含其他模式的列表。

最终,执行

时出错
let realm = new Realm({schema: MySchemas});

线。错误是:" JS值必须是类型:number"。这就是我如何设置的事情。

Schema.js

'use strict';

let currentSchemaVersion = 0;

const Schema1 = {
    name: 'Type1',
    primaryKey: 'id',
    properties: {
        id: {type: 'string', indexed:true},
        propOne: 'string',
        propTwo: 'string',
        propThree: 'int',
        propFour: {type: 'list', objectType: 'Type2'},
        propFive: {type: 'list', objectType: 'Type3'}
    }
};

const Schema2 = {
    name: 'Type2',
    primaryKey: 'id',
    properties:{
        id: 'string',
        prop1: 'string'
    }
};

const Schema3 = {
    name: 'Type3',
    primaryKey: 'id',
    properties:{
        id: {type:'string', indexed:true},
        propOne: {type:'string', indexed:true},
    }
}

export const MySchemas = [Schema1, Schema2, Schema3];

然后在引用文件中,将其命名为 MyComponent.js

'use strict';

import Realm from 'realm';
import * as MySchemas from './Data/Schema.js';

let realm = new Realm({schema: MySchemas}); //BARRRFFFF!

整个地段中唯一的数字是来自Type1的propThree,对吧?所以我认为这个问题在某种程度上是相关的,但是我没有看到内部因素,所以我不知道这笔交易是什么。我已经尝试过在该属性上使用和不使用默认值。无论哪种方式都没有。

非常感谢任何见解。不幸的是,How to add a nested List of objects in Realm "Error: JS value must be of type: object"没有帮助。

编辑:我刚刚删除了嵌套列表和整个节目中唯一一个数字(propThree)的属性,我仍然得到同样的错误。

2 个答案:

答案 0 :(得分:1)

我遇到了同样的错误。 在我的领域object.schema中,我设置了一个primaryKey" id",但是当我创建对象时,我没有分配" id"价值。因为我认为primaryKey会自动增加,如果我没有分配价值。 实际上,primaryKey不会自动增加,因为它的属性可以是" string"或" int" 。此外,primaryKey应该是唯一且非null。 所以,我猜你没有分配primaryKey的值,然后遭受这个错误。 http://handlebarsjs.com/block_helpers.html

答案 1 :(得分:1)

我认为,将它描述为JS的新手。通过更改将模式导入MyComponent.js的方式,我已经能够解决问题。

而不是

import * as MySchemas from './Data/Schema.js';

如果我选择

import {MySchemas} from './Data/Schema.js';
事情有效。或者,如果Schema.js使用导出默认值,那么我相信原始导入将起作用。