我正在尝试创建一个嵌套在容器中的项的领域数据库。这将像标准文件系统一样运行,其中容器可以包含项目和其他容器。我该如何创建这种类型的结构?我已经设置了这些模式:
const ItemSchema = {
name: 'Item',
primaryKey: 'id',
properties: {
id: {type: 'string', indexed: true},
title: 'string',
createdAt: 'date',
updatedAt: 'date',
picture: {type: 'data', optional: true},
parent: {type: 'Container', optional: true},
}
};
const ContainerSchema = {
name: 'Container',
primaryKey: 'id',
properties: {
id: {type:'string', indexed:true},
title: 'string',
createdAt: 'date',
updatedAt: 'date',
parent: {type: 'Container', optional: true},
childContainers: {type: 'list', objectType: 'Container'},
childItems: {type: 'list', objectType: 'Item'},
}
};
我还为Items设置了这个模型,但还没有为Containers创建一个:
class ItemModel {
constructor(title, children) {
this.id = Utils.guid();
this.title = title;
this.children = children;
this.createdAt = new Date();
this.updatedAt = new Date();
}
}
现在,我如何实际填充数据库并将父项和子项分配给现有项目?我知道我必须这样做才能创建一个项目:
let item = new ItemModel('testItem')
db.write(() => {
item.updatedAt = new Date();
db.create('Item', item);
})
但我不知道在那之后我去了哪里。领域文档给出了这个例子:
carList.push({make: 'Honda', model: 'Accord', miles: 100});
但是一旦我使用db.create
创建了一个容器,我该如何将现有项目添加为其子项目(不是如文档所示声明新项目)?
答案 0 :(得分:1)
创建项目后,您可以使用push()
将其添加到容器中的列表中。
假设您已经拥有容器,代码可能如下所示:
let item = new ItemModel('testItem')
db.write(() => {
item.updatedAt = new Date();
var item = db.create('Item', item);
container.childItems.push(item);
});