我有一个应用程序的原型,运行良好,具有简单的单一方案领域。但是现在我想添加一些其他模式,让一个模式包含其他模式的列表。
最终,执行
时出错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)的属性,我仍然得到同样的错误。
答案 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使用导出默认值,那么我相信原始导入将起作用。