Files
Pawer/cloudfunctions/postUpdate/index.js

37 lines
1.2 KiB
JavaScript

const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database()
const ALLOWED_VISIBILITY = ['public', 'friends', 'private']
// Lightweight edit: only the post's text content and visibility can change here.
exports.main = async event => {
const { OPENID } = cloud.getWXContext()
if (!OPENID) throw new Error('no openid in wx context')
if (!event.postId) throw new Error('postId is required')
let postRes
try {
postRes = await db.collection('posts').doc(event.postId).get()
} catch (_) {
throw new Error('post not found')
}
const post = postRes.data
if (!post) throw new Error('post not found')
if (post.authorOpenid !== OPENID) throw new Error('not allowed')
const data = { updatedAt: Date.now() }
if (typeof event.content === 'string') {
const content = event.content.trim()
if (!content) throw new Error('content is required')
data.content = content.slice(0, 2000)
}
if (typeof event.visibility === 'string' && ALLOWED_VISIBILITY.includes(event.visibility)) {
data.visibility = event.visibility
}
await db.collection('posts').doc(event.postId).update({ data })
return { ok: true }
}