schema-album.js 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. var Schema = require('mongoose').Schema;
  2. const config = require('../config/app');
  3. let albumSchema = new Schema({
  4. pid: { type: String, require: true, index: true, desc: '产品id' },
  5. tag: { type: String, required: true, desc: 'TAG' }, // 专辑唯一标识
  6. icon: { type: Schema.Types.ObjectId, ref: 'ArtBin', require: true, desc: 'icon' },
  7. cover: { type: Schema.Types.ObjectId, ref: 'ArtBin', require: true, desc: '头图' },
  8. enabled: { type: Boolean, default: false, index: true, desc: '启用' },
  9. title: { type: Schema.Types.ObjectId, ref: 'Translate', desc: '名称' }, //支持多语言, populate from coloring_ol db
  10. slogon: { type: Schema.Types.ObjectId, ref: 'Translate', desc: '口号' }, //支持多语言, populate from coloring_ol db
  11. seoTitle: { type: String, desc: '专辑标题', searchable: true }, // 新增字段,网站title,60个字符以内, json字符串,形如: {zh: '中国', en: 'China'}
  12. seoDescription: { type: String, desc: '专辑描述', searchable: true }, // 新增字段,网站seo meta description, 160个字符以内, json字符串,形如: {zh: '中国', en: 'China'}
  13. order: { type: Number, default: 1000, index: true, desc: '排序', orderable: true, },
  14. contents: { type: [Schema.Types.ObjectId], ref: 'Art', default: [], desc: '内容' }, // 只存内容id,结合popuate
  15. timeCreate: { type: Date, index: true, desc: '创建时间', default: Date.now, orderable: true, },
  16. timeLastModify: { type: Date, index: true, desc: '最后修改时间', default: Date.now, orderable: true, },
  17. }, {
  18. strict: true,
  19. toJSON: {
  20. virtuals: true,
  21. transform: albumTransform,
  22. },
  23. toObject: {
  24. virtuals: true,
  25. transform: albumTransform,
  26. },
  27. });
  28. function albumTransform(doc, ret) {
  29. ret.icon = `${config.resHost}/res/coloring/album_icon/640/${doc._id}.png`;
  30. ret.cover = `${config.resHost}/res/coloring/album_cover/720/${doc._id}.png`;
  31. ret.size = doc.contents ? doc.contents.length : 0;
  32. }
  33. module.exports = albumSchema;