ThingsDB创建关联类型实例报错:关联需通过存储事物属性创建
解决ThingsDB双向关联创建问题
问题出在你试图直接给新创建的Workspace的owner属性赋值已有的Person实例,但因为已经定义了双向关联(Person.workspaces ↔ Workspace.owner),ThingsDB要求必须通过已存储对象的关联属性来建立关联,而非直接设置反向属性。
正确的做法是通过Person的workspaces集合来添加Workspace实例,ThingsDB会自动维护反向的owner关联,无需手动设置。
方法一:先创建Workspace再添加关联
// 创建不带owner的Workspace实例 w = Workspace{name: 'Foo'}; // 通过Person的workspaces属性添加,自动建立双向关联 .alice.workspaces.add(w);
方法二:直接在关联属性中创建Workspace(更简洁)
// 直接在.alice的workspaces里创建并添加Workspace,自动设置owner w = .alice.workspaces.add(Workspace{name: 'Foo'});
执行上述任意一种方式后,你可以验证关联是否正确:
// 检查Workspace的owner是否指向.alice w.owner; // 返回.alice // 检查Person的workspaces是否包含w .alice.workspaces.has(w); // 返回true
这种方式符合ThingsDB的关联设计逻辑,确保双向关联的一致性,避免手动设置可能导致的关系不一致问题。
内容的提问来源于stack exchange,提问作者Harry Doler
相关产品推荐
相关产品推荐

