2.0.12 • Published 2 years ago
egg-cms-data v2.0.12
egg-cms-data
获取内容管理平台静态数据
依赖说明
依赖的 egg 版本
egg-cms-data 版本 | egg 2.x |
---|---|
2.x | 😁 |
1.x | 😁 |
开启插件
// config/plugin.js
exports.cmsData = {
enable: true,
package: 'egg-cms-data',
};
使用说明
config
exports.cmsData = {
siteId: '5c78f07430ed58c413a517a1', // 站点ID
redisKey: 'cmsData', // redis cache key
api: '/cms/api/module/get', // cms platform restful api
// common modules
common: [
{
id: '5c7cc3428541d9bc0bb8e4b1',
name: 'header'
}
]
}
获取数据
获取普通模块数据
以后将废弃,因为 mongodb ObjectID 保持各环境同步太麻烦,所以通过id获取的数据,请使用 getDataByIdentity
const data = await ctx.helper.cmsData.getData(moduleId, ctx)
通过自定义唯一ID获取模块数据
因为 ObjectID 是 mongodb 自增的标识,无法人为控制,一个新的模块从开发到发布,要保持 SIT、UAT、生产 环境的 ObjectID 同步过于麻烦,所以需要一个 自定义的唯一标识
来保证各环境获取的一致性,该 API 就是取代 getData
的
const data = await ctx.helper.cmsData.getDataByIdentity(identity, ctx)
通过页面ID获取页面数据
const data = await ctx.helper.cmsData.getPageData(pageId, ctx)
// response
{
moduleName: {
...moduleData
},
moduleAname: {
...moduleAData
}
}
获取公共模块数据(如全站统一头尾)
// 注意不是异步的
// 公共数据为了避免每个Controller都去读取,所以提供同步方法给模板helper获取
const data = ctx.helper.cmsData.getCommonData("header", ctx)
获取预览数据
添加preview=true
search,开启预览模式
通过模块Name获取模块数据
该方法主要是开放给获取相同模块的数据列表 (比如公共列表)
const data = ctx.helper.cmsData.getDataByModuleName(moduleName)
// response
[
{
_id: moduleId,
pageId: pageId
}
]
数据获取规则
- 应用初始化时,会获取模块和页面数据,缓存到redis (为了避免CMS平台的压力)
- 生产数据从redis cache获取,预览数据直接读取CMS平台草稿数据
- CMS 数据发布上线,会更新redis cache
详细配置
请到 config/config.default.js 查看详细配置项说明。
单元测试
提问交流
请到 egg issues 异步交流。