// 云函数入口文件 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' } } }