v0.0.4
This commit is contained in:
46
cloudfunctions/userList/index.js
Normal file
46
cloudfunctions/userList/index.js
Normal file
@@ -0,0 +1,46 @@
|
||||
const cloud = require('wx-server-sdk')
|
||||
|
||||
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
|
||||
const db = cloud.database()
|
||||
const _ = db.command
|
||||
|
||||
// Discover other users to follow. Optional keyword filters by nickname.
|
||||
exports.main = async event => {
|
||||
const { OPENID } = cloud.getWXContext()
|
||||
if (!OPENID) throw new Error('no openid in wx context')
|
||||
const meRes = await db.collection('users').where({ openid: OPENID }).limit(1).get()
|
||||
if (!meRes.data.length) throw new Error('user not found')
|
||||
const meId = meRes.data[0]._id
|
||||
const keyword = String(event.keyword || '').trim()
|
||||
|
||||
const where = { _id: _.neq(meId) }
|
||||
if (keyword) where.nickname = db.RegExp({ regexp: keyword, options: 'i' })
|
||||
|
||||
const usersRes = await db.collection('users')
|
||||
.where(where)
|
||||
.orderBy('lastLoginAt', 'desc')
|
||||
.limit(30)
|
||||
.get()
|
||||
|
||||
const safeFollows = where2 =>
|
||||
db.collection('follows').where(where2).limit(500).get().catch(() => ({ data: [] }))
|
||||
const [followingRes, followerRes] = await Promise.all([
|
||||
safeFollows({ followerId: meId }),
|
||||
safeFollows({ followeeId: meId })
|
||||
])
|
||||
const followingSet = new Set(followingRes.data.map(f => f.followeeId))
|
||||
const followerSet = new Set(followerRes.data.map(f => f.followerId))
|
||||
|
||||
const list = usersRes.data.map(u => ({
|
||||
id: u._id,
|
||||
name: u.nickname || '用户',
|
||||
handle: u.handle || '',
|
||||
avatarKey: u.avatarKey || 'gradient-avatar-1',
|
||||
avatarUrl: u.avatarUrl || '',
|
||||
bio: u.bio || '',
|
||||
isFollowing: followingSet.has(u._id),
|
||||
isFriend: followingSet.has(u._id) && followerSet.has(u._id)
|
||||
}))
|
||||
|
||||
return { list }
|
||||
}
|
||||
8
cloudfunctions/userList/package.json
Normal file
8
cloudfunctions/userList/package.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"name": "userList",
|
||||
"version": "1.0.0",
|
||||
"main": "index.js",
|
||||
"dependencies": {
|
||||
"wx-server-sdk": "latest"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user