修改bug

This commit is contained in:
2026-06-18 15:38:28 +08:00
parent 0e43ccec72
commit 702b578e1e
57 changed files with 1378 additions and 66 deletions

View File

@@ -2,23 +2,64 @@ const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
const db = cloud.database()
const DRAFTS_COLLECTION = 'drafts'
function isCollectionMissing(error) {
const text = String(error?.errMsg || error?.message || error || '')
return (
text.includes('collection not exist') ||
text.includes('collection not exists') ||
text.includes('collection is not exists') ||
text.includes('DATABASE_COLLECTION_NOT_EXIST') ||
text.includes('-502005')
)
}
function isCollectionAlreadyExists(error) {
const text = String(error?.errMsg || error?.message || error || '')
return text.includes('collection already exists') || text.includes('DATABASE_COLLECTION_ALREADY_EXIST')
}
async function ensureDraftsCollection() {
if (typeof db.createCollection !== 'function') {
throw new Error('drafts collection does not exist')
}
try {
await db.createCollection(DRAFTS_COLLECTION)
} catch (error) {
if (!isCollectionAlreadyExists(error)) throw error
}
}
async function getExistingDraft(openid) {
try {
return await db.collection(DRAFTS_COLLECTION).where({ openid }).limit(1).get()
} catch (error) {
if (!isCollectionMissing(error)) throw error
await ensureDraftsCollection()
return { data: [] }
}
}
exports.main = async event => {
const { OPENID } = cloud.getWXContext()
if (!OPENID) throw new Error('no openid in wx context')
const now = Date.now()
const data = {
openid: OPENID,
draft: event.draft || {},
updatedAt: now
}
const existed = await db.collection('drafts').where({ openid: OPENID }).limit(1).get()
const existed = await getExistingDraft(OPENID)
const collection = db.collection(DRAFTS_COLLECTION)
if (existed.data.length) {
await db.collection('drafts').doc(existed.data[0]._id).update({ data })
await collection.doc(existed.data[0]._id).update({ data })
return { draftId: existed.data[0]._id, updatedAt: now }
}
const result = await db.collection('drafts').add({ data })
const result = await collection.add({ data })
return { draftId: result._id, updatedAt: now }
}