index.js 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. })
  21. .skip(event.page_token)
  22. .limit(event.page_size)
  23. .end()
  24. return {
  25. list: questions.list,
  26. next_page_token: event.page_token + questions.list.length,
  27. status: 'OK'
  28. }
  29. } else if (event.pub_id) {
  30. const questions = await db.collection('question')
  31. .aggregate()
  32. .lookup({
  33. from: 'message',
  34. localField: 'msg_id',
  35. foreignField: '_id',
  36. as: 'message'
  37. })
  38. .unwind('$message')
  39. .lookup({
  40. from: 'publisher',
  41. localField: 'message.pub_id',
  42. foreignField: '_id',
  43. as: 'message.publisher'
  44. })
  45. .unwind('$message.publisher')
  46. .match({
  47. 'message.publisher._id': event.pub_id
  48. })
  49. .sort({
  50. question_time: -1
  51. })
  52. .skip(event.page_token)
  53. .limit(event.page_size)
  54. .end()
  55. return {
  56. list: questions.list,
  57. next_page_token: event.page_token + questions.list.length,
  58. status: 'OK'
  59. }
  60. } else {
  61. const questions = await db.collection('question')
  62. .aggregate()
  63. .match({
  64. user_id: OPENID
  65. })
  66. .sort({
  67. question_time: -1
  68. })
  69. .skip(event.page_token)
  70. .limit(event.page_size)
  71. .lookup({
  72. from: 'message',
  73. localField: 'msg_id',
  74. foreignField: '_id',
  75. as: 'message'
  76. })
  77. .unwind('$message')
  78. .end()
  79. return {
  80. list: questions.list,
  81. next_page_token: event.page_token + questions.list.length,
  82. status: 'OK'
  83. }
  84. }
  85. }