'use strict'; const assert = require('assert'); const _ = require('lodash'); const { ObjectId } = require('mongoose').Types; const { CrudService } = require('naf-framework-mongoose/lib/service'); const { BusinessError, ErrorCode } = require('naf-core').Error; class QuestionnaireService extends CrudService { constructor(ctx) { super(ctx, 'qusetionnaire'); this.questionnairemodel = this.ctx.model.Questionnaire; this.questionmodel = this.ctx.model.Question; } // 插入问卷 async create(data) { const { name, num } = data; assert(name, '问卷名称不能为空'); assert(num, '问卷序号不能为空'); return await this.questionnairemodel.create(data); } // 根据id删除问卷 async delete({ id }) { await this.questionnairemodel.findByIdAndDelete(id); return 'deleted'; } // 根据id更新问卷信息 async update({ id }, data) { console.log(data); const questionnaire = await this.questionnairemodel.findById(id); if (questionnaire.name) { questionnaire.name = data.name; } if (questionnaire.num) { questionnaire.num = data.num; } questionnaire.question = data.question; console.log(questionnaire); return await questionnaire.save(); } // 查询 async query({ skip, limit, ...num }) { const total = await (await this.questionnairemodel.find(num)).length; const data = await this.questionnairemodel.find(num).skip(Number(skip)).limit(Number(limit)); const result = { total, data }; return result; } // 查询详情 async show({ id }) { const questionnaire = await this.questionnairemodel.findById(id); const questions = await questionnaire.question; const datas = []; // 根据问卷中保存的问卷题目id查询题目详情 for (const code of questions) { const question = await this.questionmodel.findById(code); // 将查询出的题目放入一个数组中 datas.push(question); } questionnaire.question = datas; // 将查询到的问卷id,名称,序号,查询到的问卷题目数组放到一个新的数据中 const newdata = { id, name: questionnaire.name, num: questionnaire.num, question: datas }; return newdata; } } module.exports = QuestionnaireService;