收藏
回答

Js方法语句如何拼接?

想写一个灵活的云函数(微信小程序),方便前端各种情况调用,问题是像这样的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
  }
}






回答关注问题邀请回答
收藏

2 个回答

  • o0o有脾气的酸奶
    o0o有脾气的酸奶
    2020-07-29
    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
      }
    }
    

    若认为该回答有用,给回答者点个[ 有用 ],让答案帮助更多的人

    2020-07-29
    有用 1
    回复
  • 微盟
    微盟
    2021-11-26

    可以参考使用 lodash.compose来进行封装

    2021-11-26
    有用
    回复
登录 后发表内容
问题标签