我有一个名为session的对象,其中另一个名为user的根对象声明为owner。在MongoDB中,所有者字段被索引为唯一的:
在用户会话中:我发送以下消息:
ofUser: anASUser
^ (self selectOne: [ :each |
(each at: 'owner.__id') = anASUser voyageId ])
ifNil: [ self new
owner: anASUser;
save ]
这是用户数据库中的用户:
{"_id":"5b5e006643d001c78f2e88d6",
"#instanceOf":"ASUser",
"#version":"-551686239533400057",
"name":"zack"}
这是调试器中Asuser的Self-VoyageID的值:
OID(5B5E006643D001C78F2E88D6)
这是从ofuser方法保存的akmsession对象:
{"_id":"5b5ef4350f2532682e2e9536",
"#instanceOf":"AKMSession",
"#version":"-928582753905278919",
"action":null,
"owner":
{"collection":"ASUser",
"#instanceOf":"ASUser",
"__id":"5b5ecf7a0f2532d63a2e952f"},
"recipe":null}
为什么akmsession对象的所有者.uuu id与asuser id不同?
总结一下:
-
第一次执行时,当特定用户没有会话对象时,执行ifnil:block,创建以as user为所有者的会话对象并保存到mongodb中。
-
所有者ID与Asuser的OID不同。
-
第二次执行时,selectone:block仍然找不到具有特定用户的会话对象。
-
所以“self new,save block”是错误的,或者我有一个错误的select查询。