index.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. // 云函数入口文件
  2. const cloud = require('wx-server-sdk')
  3. cloud.init()
  4. const db = cloud.database()
  5. const _ = db.command
  6. // 云函数入口函数
  7. exports.main = async (event, context) => {
  8. const {
  9. OPENID
  10. } = cloud.getWXContext()
  11. if (event.msg_id) {
  12. const questions = await db.collection('question')
  13. .aggregate()
  14. .match({
  15. msg_id: event.msg_id,
  16. answer: _.neq('')
  17. })
  18. .sort({
  19. rank: -1,
  20. answer_time: -1
  21. })
  22. .skip(event.page_token)
  23. .limit(event.page_size)
  24. .end()
  25. return {
  26. list: questions.list,
  27. next_page_token: event.page_token + questions.list.length,
  28. status: 'OK'
  29. }
  30. } else if (event.pub_id) {
  31. const questions = await db.collection('question')
  32. .aggregate()
  33. .lookup({
  34. from: 'message',
  35. localField: 'msg_id',
  36. foreignField: '_id',
  37. as: 'message'
  38. })
  39. .unwind('$message')
  40. .match({
  41. 'message.pub_id': event.pub_id
  42. })
  43. .sort({
  44. question_time: -1
  45. })
  46. .skip(event.page_token)
  47. .limit(event.page_size)
  48. .end()
  49. return {
  50. list: questions.list,
  51. next_page_token: event.page_token + questions.list.length,
  52. status: 'OK'
  53. }
  54. } else {
  55. const questions = await db.collection('question')
  56. .aggregate()
  57. .match({
  58. user_id: OPENID
  59. })
  60. .sort({
  61. question_time: -1
  62. })
  63. .skip(event.page_token)
  64. .limit(event.page_size)
  65. .lookup({
  66. from: 'message',
  67. localField: 'msg_id',
  68. foreignField: '_id',
  69. as: 'message'
  70. })
  71. .unwind('$message')
  72. .end()
  73. return {
  74. list: questions.list,
  75. next_page_token: event.page_token + questions.list.length,
  76. status: 'OK'
  77. }
  78. }
  79. }