cube.js schemaversion的处理
cube.js 提供了动态schema 生成的处理,但是有些时候是需要进行schema 重新编译生成的
cube.js 提供了一个schemaVersion的配置选项可以用来解决此解决,我们可以基于api进行扩展
参考定义
注意此选项对于dev 模式是没有用的,因为dev每次都会进行schema 的编译处理的,需要在production环境测试
- production 环境启用
可以通过环境变量NODE_ENV='production',或者代码的devServer: false 控制 - 参考代码
module.exports = {
schemaVersion: async ({ authInfo }) => {
const schemaVersions = await (
await fetch('http://your-api-endpoint/schemaVersion')
).json();
return schemaVersions[authInfo.tenantId];
},
};
说明
如果进行schema 重新编译的处理我们就可以基于自己包装的一个通用服务,进行不同app 或者不同租户的版本管理,这样可以
包装schema数据的实时更新,增强系统的灵活性,同时可以方便的集成我们的ci/cd 系统或者软schema 的生命周期管理
参考资料
https://cube.dev/docs/schema/dynamic-schema-creation#usage-with-schema-version