|
|
@@ -4,6 +4,7 @@ const cloud = require('wx-server-sdk')
|
|
|
cloud.init()
|
|
|
const db = cloud.database()
|
|
|
const _ = db.command
|
|
|
+const $ = db.command.aggregate
|
|
|
|
|
|
// 云函数入口函数
|
|
|
exports.main = async (event, context) => {
|
|
|
@@ -69,6 +70,42 @@ exports.main = async (event, context) => {
|
|
|
}
|
|
|
})
|
|
|
|
|
|
+ return {
|
|
|
+ list: messages.list,
|
|
|
+ next_page_token: event.page_token + messages.list.length,
|
|
|
+ status: 'OK'
|
|
|
+ }
|
|
|
+ } else if (event.favorite) {
|
|
|
+ const messages = await db.collection('message')
|
|
|
+ .aggregate()
|
|
|
+ .lookup({
|
|
|
+ from: 'favorite',
|
|
|
+ let: {
|
|
|
+ msg_id: '$_id'
|
|
|
+ },
|
|
|
+ pipeline: $.pipeline()
|
|
|
+ .match(_.expr($.and([$.eq(['$msg_id', '$$msg_id']), $.eq(['$user_id', OPENID])])))
|
|
|
+ .project({
|
|
|
+ _id: 0,
|
|
|
+ favorite_time: 1
|
|
|
+ }).done(),
|
|
|
+ as: 'favorite'
|
|
|
+ })
|
|
|
+ .unwind('$favorite')
|
|
|
+ .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,
|