| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- // 云函数入口文件
- const cloud = require('wx-server-sdk')
- cloud.init()
- const db = cloud.database()
- const _ = db.command
- // 云函数入口函数
- exports.main = async (event, context) => {
- const {
- OPENID
- } = cloud.getWXContext()
- if (event.pub_id) {
- const messages = await db.collection('message')
- .aggregate()
- .match({
- pub_id: event.pub_id
- })
- .sort({
- publish_time: -1
- })
- .skip(event.page_token)
- .limit(event.page_size)
- .end()
- return {
- list: messages.list,
- next_page_token: event.page_token + messages.list.length,
- status: 'OK'
- }
- } else if (event.keyword) {
- const regexp = db.RegExp({
- regexp: event.keyword,
- options: 'i'
- })
- const messages = await db.collection('message')
- .aggregate()
- .match(_.or([{
- name: regexp
- }, {
- brief: regexp
- }, {
- detail: regexp
- }]))
- .sort({
- publish_time: -1
- })
- .skip(event.page_token)
- .limit(event.page_size)
- .lookup({
- from: 'publisher',
- localField: 'pub_id',
- foreignField: '_id',
- as: 'publisher'
- })
- .end()
- for (let i = 0; i < messages.list.length; i++) {
- messages.list[i].publisher = messages.list[i].publisher[0]
- }
- await db.collection('search')
- .add({
- data: {
- user_id: OPENID,
- keyword: event.keyword || '',
- search_time: new Date()
- }
- })
- return {
- list: messages.list,
- next_page_token: event.page_token + messages.list.length,
- status: 'OK'
- }
- } else {
- const messages = await db.collection('message')
- .aggregate()
- .sort({
- publish_time: -1
- })
- .skip(event.page_token)
- .limit(event.page_size)
- .lookup({
- from: 'publisher',
- localField: 'pub_id',
- foreignField: '_id',
- as: 'publisher'
- })
- .end()
- for (let i = 0; i < messages.list.length; i++) {
- messages.list[i].publisher = messages.list[i].publisher[0]
- }
- return {
- list: messages.list,
- next_page_token: event.page_token + messages.list.length,
- status: 'OK'
- }
- }
- }
|