问题描述
当在 ObjectStack 服务启动时,plugin-auth 插件没有将认证相关对象(如 sys_user、sys_session 等)通过 registerService('app.auth', manifest) 的方式注册到 ObjectQL 元数据系统。因此,在 ObjectQLPlugin 的 schema 同步阶段,这些认证相关的对象未被包含在需要同步的对象表结构集合内,导致表结构未被自动创建或同步。最终表现为 Better-Auth 查询相关表时报错:SQLITE_ERROR: no such table: sys_user。
期望行为
plugin-auth 插件在初始化(init/onEnable)阶段应当按照约定,将认证相关对象(用户、会话、账户、验证码…)打包为 app 服务,通过 registerService('app.plugin-auth', manifest) 向核心系统注册。- ObjectQLPlugin 在启动时可以自动发现并同步这些对象的表结构,确保 Better-Auth 初始化后表结构已准备好。
建议解决方案
- 在
plugin-auth 的初始化阶段,添加对认证对象元数据的注册逻辑,并保证对象定义满足 ObjectQL schema 标准。 - 遵循 createAppPlugin 的设计模式,将认证实体注册为 app 服务(如
app.com.objectstack.auth),使 ObjectQLPlugin 能统一处理 metadata。 - 对于升级需求,需注意兼容已存在的
sys_user 等 legacy 表名。
相关参考
如有需要,可由平台架构组协助设计标准的对象清单与 schema。
问题描述
当在 ObjectStack 服务启动时,
plugin-auth插件没有将认证相关对象(如sys_user、sys_session等)通过 registerService('app.auth', manifest) 的方式注册到 ObjectQL 元数据系统。因此,在ObjectQLPlugin的 schema 同步阶段,这些认证相关的对象未被包含在需要同步的对象表结构集合内,导致表结构未被自动创建或同步。最终表现为 Better-Auth 查询相关表时报错:SQLITE_ERROR: no such table: sys_user。期望行为
plugin-auth插件在初始化(init/onEnable)阶段应当按照约定,将认证相关对象(用户、会话、账户、验证码…)打包为 app 服务,通过registerService('app.plugin-auth', manifest)向核心系统注册。建议解决方案
plugin-auth的初始化阶段,添加对认证对象元数据的注册逻辑,并保证对象定义满足 ObjectQL schema 标准。app.com.objectstack.auth),使 ObjectQLPlugin 能统一处理 metadata。sys_user等 legacy 表名。相关参考
如有需要,可由平台架构组协助设计标准的对象清单与 schema。