想写一个灵活的云函数(微信小程序),方便前端各种情况调用,问题是像这样的JS方法语句:
db.collection(event.collection).where(event.where).orderBy(event.fieldName, event.order).field(event.field).limit(event.limit).skip(event.skip).get(event.get)
是否可以像PHP中的MySql语句那样拼接,例如根据event过来的数据,来判断是否加orderBy、是否加limit等。因为前端需求不是所有都要orderBy、limit等。
当然可以根据前端需求独立写一个云函数,但前端各种情况多,要写的云函数也多,管理上容易麻烦。
以上需求是否有办法实现,求指教。
完整函数代码:
const cloud = require('wx-server-sdk')
cloud.init()
const db = cloud.database()
const _ = db.command
exports.main = async (event, context) => {
try {
return await db.collection(event.collection).where(event.where).orderBy(event.fieldName, event.order).field(event.field).limit(event.limit).skip(event.skip).get(event.get)
} catch (e) {
return e
}
}
exports.main = async (event, context) => { let { collection = !1, where = !1, orderBy = !1, field = !1, limit = !1, skip = !1 } = event, query try { if(!collection) return '未传集合名' else if(!where) return '查询条件错误' query = db.collection(collection).where(where) orderBy && (query = query.orderBy(orderBy)) field && (query = query.field(field)) limit !== !1 && (query = query.limit(limit)) skip !== !1 && (query = query.skip(skip)) return await query.get() } catch (e){ return e } }
若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人
可以参考使用 lodash.compose来进行封装