fetchThumbs.js 810 B

123456789101112131415161718192021222324
  1. 'use strict';
  2. const _ = require('lodash');
  3. const querystring = require('querystring');
  4. const { ObjectId } = require('mongoose').Types;
  5. module.exports = options => {
  6. return async function fetchThumbs(ctx, next) {
  7. const url = ctx.request.url.split('?')[1];
  8. const query = JSON.parse(JSON.stringify(querystring.parse(url)));
  9. const { openid } = query;
  10. await next();
  11. if (openid) {
  12. let data = _.get(ctx.response, 'body.data');
  13. if (data) {
  14. data = JSON.parse(JSON.stringify(data));
  15. const res = await ctx.service.thumbs.getSum({ ids: [ data._id ], openid });
  16. const r = res.find(f => ObjectId(f._id).equals(data._id));
  17. if (r && r.sum > 0) data.thumbs = true;
  18. else data.thumbs = false;
  19. ctx.response.body.data = data;
  20. }
  21. }
  22. };
  23. };