微信小程序 云开发 数据库操作

微信小程序 云开发 数据库操作的一个云函数

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
    env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()

/**
 * 删除数组中的某一个对象
 * @param arr {Array} 数组
 * @param obj {Object} 需要删除的对象
 * @returns {Array} 处理之后的数组
 */
const arrRemoveObj = (arr, obj) => {
    let len = arr.length;
    for (let i = 0; i < len; i++) {
        if (arr[i] === obj) {
            if (i === 0) {
                arr.shift();
                return arr;
            } else if (i === len - 1) {
                arr.pop();
                return arr;
            } else {
                arr.splice(i, 1);
                return arr;
            }
        }
    }
};



// 云函数入口函数
exports.main = async (event, context) => {
    const wxContext = cloud.getWXContext()
    var errMsg = ""
    var result = []
    const sheet = event.sheet //表名
    const _ = db.command

    //获取集合的引用 
    const todos = db.collection(sheet)

    const type = event.type //增删改查 select remove set update add

    console.log(sheet)
    console.log(type)

    /***************数据库增加操作*************** */
    if (type === "add") {
        const data = event.data
        //增加记录操作
        await todos.add({
            data: data
        }).then(res => {
            console.log(res)
            result = res
            errMsg = res.errMsg
        }).catch(res => {
            console.log(res)
            result = res
            errMsg = res.errMsg
        })
    }

    /*****************数据直接修改字段********************** */
    if (type === "modfield") {
        //对象操作 operadata {field opera data }  oprea:add 数值相加 push 数组追加 set 是更改值    //暂不设计删除数组的功能 
        //operadata 是一个数组 
        console.log("modfield")
        let operadata = event.operadata
        let selectId = event.selectId
        let UpdateData = {}
        for (let i = 0; i < operadata.length; ++i) {
            // //遍历key和value
            //     const keys = Object.keys(cg_arr)
            //     keys.forEach(function (item,key) {
            //     console.log("item:" + item,"value:"+cg_arr[item])
            let dealMth = operadata[i]
            console.log("deal Method", dealMth)
            let field = dealMth.field
            let opera = dealMth.opera
            let data = dealMth.data
            if (opera === "add") {
                UpdateData[field] = _.inc(Number(data))
            } else {
                if (opera === "push") {
                    UpdateData[field] = _.push(data)
                } else {
                    if (opera === "set") {
                        UpdateData[field] = _.set(data)
                    }
                    else{
                        if(opera==="unshift"){
                            UpdateData[field] = _.unshift(data)
                        }
                        else{
                            if(opera==="shift"){
                                UpdateData[field] = _.shift()
                            }
                            else{
                                if(opera==="pop"){
                                    UpdateData[field] = _.pop()
                                }
                                else{
                                    
                                }
                            }
                        }
                    }
                }
            }

        }
        console.log("updateData", UpdateData)

        let data = {}
        data.data = UpdateData
        data.success = function (res) {
            console.log(res.data)
        }

        console.log("data", data)

        todos.doc(selectId).update(data).then(res => {
            console.log(res)
            result = res
            errMsg = res.errMsg
        }).catch(res => {
            console.log(res)
            result = res
            errMsg = res.errMsg
        })

    }



    /******************数据库查询操作************************ */
    if (type === "select") {
        //where  field  limit  orderBy skip
        const skip = event.skip
        const limit = event.limit
        const orderByField = event.orderByField
        const orderByOrder = event.orderByOrder
        const fields = event.fields
        const whereContent = event.whereContent


        var isSkip = false
        if (event.isSkip)
            isSkip = true
        var isLimit = false
        if (event.isLimit)
            isLimit = true
        var isOrderBy = false
        if (event.isOrderBy)
            isOrderBy = true
        var isFields = false
        if (event.isFields)
            isFields = true
        //查询数据库操作
        var isSelectId = false
        if (event.isSelectId)
            isSelectId = true
        var isWhere = false
        if (event.isWhere)
            isWhere = true



        if (isWhere) {
            //利用id 查询唯一一条记录
            if (isSelectId) {
                if (isOrderBy) {
                    if (isFields) {
                        console.log("jin isfields selectID")
                        const selectId = event.selectId
                        await todos.doc(selectId).orderBy(orderByField, orderByOrder).field(fields).get().then(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        }).catch(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        })
                    } else {
                        console.log("jin selectID")
                        const selectId = event.selectId
                        await todos.doc(selectId).orderBy(orderByField, orderByOrder).get().then(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        }).catch(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        })

                    }
                } else {
                    if (isFields) {
                        console.log("jin isfields selectID")
                        const selectId = event.selectId
                        await todos.doc(selectId).field(fields).get().then(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        }).catch(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        })
                    } else {
                        console.log("jin selectID")
                        const selectId = event.selectId
                        await todos.doc(selectId).get().then(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        }).catch(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        })

                    }
                }

            } else {
                console.log("非 selectID")
                if (isSkip) {
                    //skip 
                    if (isLimit) {
                        //skip limit
                        if (isFields) {
                            //skip limit fields
                            if (isOrderBy) {
                                //skip limit fields orderBy
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).limit(limit).field(fields).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip limit fields !orderBy
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).limit(limit).field(fields).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip limit !fields
                            if (isOrderBy) {
                                //skip limit !fields orderBy
                                await todos.where(whereContent).skip(skip).limit(limit).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip limit !fields !orderBy
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).limit(limit).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    } else {
                        //skip !limit
                        if (isFields) {
                            //skip !limits fields
                            if (isOrderBy) {
                                //skip !limit fields orderBy
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).field(fields).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip !limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).field(fields).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip !limits !fields
                            if (isOrderBy) {
                                //skip !limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip !limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    }

                } else {
                    //skip 
                    if (isLimit) {
                        //skip limit
                        if (isFields) {
                            //skip limit fields
                            if (isOrderBy) {
                                // !skip limit fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).limit(limit).field(fields).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).limit(limit).field(fields).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //!skip limit !fields
                            if (isOrderBy) {
                                //!skip limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).limit(limit).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).limit(limit).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    } else {
                        //!skip !limit
                        if (isFields) {
                            //!skip !limits fields
                            if (isOrderBy) {
                                //!skip !limit fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).field(fields).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip !limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).field(fields).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip !limits !fields
                            if (isOrderBy) {
                                //!skip !limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })

                            } else {
                                //!skip !limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    }
                }
            }

        } else {
            //利用id 查询唯一一条记录
            if (isSelectId) {
                if (isOrderBy) {
                    if (isFields) {
                        console.log("jin isfields selectID")
                        const selectId = event.selectId
                        await todos.doc(selectId).orderBy(orderByField, orderByOrder).field(fields).get().then(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        }).catch(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        })
                    } else {
                        console.log("jin selectID")
                        const selectId = event.selectId
                        await todos.doc(selectId).orderBy(orderByField, orderByOrder).get().then(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        }).catch(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        })

                    }
                } else {
                    if (isFields) {
                        console.log("jin isfields selectID")
                        const selectId = event.selectId
                        await todos.doc(selectId).field(fields).get().then(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        }).catch(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        })
                    } else {
                        console.log("jin selectID")
                        const selectId = event.selectId
                        await todos.doc(selectId).get().then(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        }).catch(res => {
                            console.log(res)
                            result = res
                            errMsg = res.errMsg
                        })

                    }
                }
            } else {
                console.log("非 selectID")
                if (isSkip) {
                    //skip 
                    if (isLimit) {
                        //skip limit
                        if (isFields) {
                            //skip limit fields
                            if (isOrderBy) {
                                //skip limit fields orderBy
                                const whereContent = event.whereContent
                                await todos.skip(skip).limit(limit).field(fields).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip limit fields !orderBy
                                const whereContent = event.whereContent
                                await todos.skip(skip).limit(limit).field(fields).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip limit !fields
                            if (isOrderBy) {
                                //skip limit !fields orderBy
                                await todos.skip(skip).limit(limit).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip limit !fields !orderBy
                                const whereContent = event.whereContent
                                await todos.skip(skip).limit(limit).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    } else {
                        //skip !limit
                        if (isFields) {
                            //skip !limits fields
                            if (isOrderBy) {
                                //skip !limit fields orderBy
                                const whereContent = event.whereContent
                                await todos.skip(skip).field(fields).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip !limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.skip(skip).field(fields).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip !limits !fields
                            if (isOrderBy) {
                                //skip !limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.skip(skip).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip !limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.skip(skip).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    }

                } else {
                    //skip 
                    if (isLimit) {
                        //skip limit
                        if (isFields) {
                            //skip limit fields
                            if (isOrderBy) {
                                // !skip limit fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.limit(limit).field(fields).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.limit(limit).field(fields).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //!skip limit !fields
                            if (isOrderBy) {
                                //!skip limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.limit(limit).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.limit(limit).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    } else {
                        //!skip !limit
                        if (isFields) {
                            //!skip !limits fields
                            if (isOrderBy) {
                                //!skip !limit fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.field(fields).orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip !limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.field(fields).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip !limits !fields
                            if (isOrderBy) {
                                //!skip !limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.orderBy(orderByField, orderByOrder).get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })

                            } else {
                                //!skip !limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.get().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    }
                }
            }

        }

    }


    /**********************数据库数目统计********************** */
    if (type === "count") {
        console.log("execCount")
        //where  field  limit  orderBy skip
        const skip = event.skip
        const limit = event.limit
        const orderByField = event.orderByField
        const orderByOrder = event.orderByOrder
        const fields = event.fields
        const whereContent = event.whereContent


        var isSkip = false
        if (event.isSkip)
            isSkip = true
        var isLimit = false
        if (event.isLimit)
            isLimit = true
        var isOrderBy = false
        if (event.isOrderBy)
            isOrderBy = true
        var isFields = false
        if (event.isFields)
            isFields = true
        //查询数据库操作
        var isSelectId = false
        if (event.isSelectId)
            isSelectId = true
        var isWhere = false
        if (event.isWhere)
            isWhere = true



        if (isWhere) {
            //利用id 查询唯一一条记录
            if (isSelectId) {
                console.log("jin selectID")
                const selectId = event.selectId
                await todos.doc(selectId).count().then(res => {
                    console.log(res)
                    result = res
                    errMsg = res.errMsg
                }).catch(res => {
                    console.log(res)
                    result = res
                    errMsg = res.errMsg
                })
            } else {
                console.log("非 selectID")
                if (isSkip) {
                    //skip 
                    if (isLimit) {
                        //skip limit
                        if (isFields) {
                            //skip limit fields
                            if (isOrderBy) {
                                //skip limit fields orderBy
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).limit(limit).field(fields).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip limit fields !orderBy
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).limit(limit).field(fields).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip limit !fields
                            if (isOrderBy) {
                                //skip limit !fields orderBy
                                await todos.where(whereContent).skip(skip).limit(limit).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip limit !fields !orderBy
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).limit(limit).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    } else {
                        //skip !limit
                        if (isFields) {
                            //skip !limits fields
                            if (isOrderBy) {
                                //skip !limit fields orderBy
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).field(fields).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip !limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).field(fields).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip !limits !fields
                            if (isOrderBy) {
                                //skip !limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip !limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).skip(skip).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    }

                } else {
                    //skip 
                    if (isLimit) {
                        //skip limit
                        if (isFields) {
                            //skip limit fields
                            if (isOrderBy) {
                                // !skip limit fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).limit(limit).field(fields).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).limit(limit).field(fields).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //!skip limit !fields
                            if (isOrderBy) {
                                //!skip limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).limit(limit).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).limit(limit).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    } else {
                        //!skip !limit
                        if (isFields) {
                            //!skip !limits fields
                            if (isOrderBy) {
                                //!skip !limit fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).field(fields).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip !limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).field(fields).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip !limits !fields
                            if (isOrderBy) {
                                //!skip !limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.where(whereContent).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })

                            } else {
                                //!skip !limit !fields !orderBy
                                //利用 where 条件查找

                                const whereContent = event.whereContent
                                await todos.where(whereContent).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    }
                }
            }

        } else {
            //利用id 查询唯一一条记录
            if (isSelectId) {
                console.log("jin selectID")
                const selectId = event.selectId
                await todos.doc(selectId).count().then(res => {
                    console.log(res)
                    result = res
                    errMsg = res.errMsg
                }).catch(res => {
                    console.log(res)
                    result = res
                    errMsg = res.errMsg
                })
            } else {
                console.log("非 selectID")
                if (isSkip) {
                    //skip 
                    if (isLimit) {
                        //skip limit
                        if (isFields) {
                            //skip limit fields
                            if (isOrderBy) {
                                //skip limit fields orderBy
                                const whereContent = event.whereContent
                                await todos.skip(skip).limit(limit).field(fields).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip limit fields !orderBy
                                const whereContent = event.whereContent
                                await todos.skip(skip).limit(limit).field(fields).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip limit !fields
                            if (isOrderBy) {
                                //skip limit !fields orderBy
                                await todos.skip(skip).limit(limit).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip limit !fields !orderBy
                                const whereContent = event.whereContent
                                await todos.skip(skip).limit(limit).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    } else {
                        //skip !limit
                        if (isFields) {
                            //skip !limits fields
                            if (isOrderBy) {
                                //skip !limit fields orderBy
                                const whereContent = event.whereContent
                                await todos.skip(skip).field(fields).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip !limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.skip(skip).field(fields).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip !limits !fields
                            if (isOrderBy) {
                                //skip !limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.skip(skip).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //skip !limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.skip(skip).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    }

                } else {
                    //skip 
                    if (isLimit) {
                        //skip limit
                        if (isFields) {
                            //skip limit fields
                            if (isOrderBy) {
                                // !skip limit fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.limit(limit).field(fields).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.limit(limit).field(fields).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //!skip limit !fields
                            if (isOrderBy) {
                                //!skip limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.limit(limit).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.limit(limit).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    } else {
                        //!skip !limit
                        if (isFields) {
                            //!skip !limits fields
                            if (isOrderBy) {
                                //!skip !limit fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.field(fields).orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            } else {
                                //!skip !limit fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.field(fields).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        } else {
                            //skip !limits !fields
                            if (isOrderBy) {
                                //!skip !limit !fields orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.orderBy(orderByField, orderByOrder).count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })

                            } else {
                                //!skip !limit !fields !orderBy
                                //利用 where 条件查找
                                const whereContent = event.whereContent
                                await todos.count().then(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                }).catch(res => {
                                    console.log(res)
                                    result = res
                                    errMsg = res.errMsg
                                })
                            }
                        }
                    }
                }
            }

        }

    }


    //console.log("一个也没进")


    /*********************数据库记录更新操作****************************************** */
    if (type === "update") {
        //查询数据库操作
        var isWhere = false
        if (event.isWhere)
            isWhere = true
        const isSelectId = event.isSelectId
        if (isSelectId) {
            const selectId = event.selectId
            console.log("is select id",selectId)
            const data = event.data
            console.log("is select id data",data)
            await todos.doc(selectId).update({
                    data: data
                }).then(res => {
                    console.log("docthen", res)
                    result = res
                    errMsg = res.errMsg
                })
                .catch(res => {
                    console.log("doccatch", res)
                    result = res
                    errMsg = res.errMsg
                })
        } else {
            //多个
            //利用 where 条件查找
            if (!isWhere) {
                const data = event.data
                await todos.update({
                    data: data
                }).then(res => {
                    console.log("docthen", res)
                    result = res
                    errMsg = res.errMsg
                }).catch(res => {
                    console.log("doccat", res)
                    result = res
                    errMsg = res.errMsg
                })
            } else {
                const whereContent = event.whereContent
                const data = event.data
                await todos.where(whereContent).update({
                    data: data
                }).then(res => {
                    console.log("docthen", res)
                    result = res
                    errMsg = res.errMsg
                }).catch(res => {
                    console.log("doccat", res)
                    result = res
                    errMsg = res.errMsg
                })
            }
        }

    }


    /*****************数据库记录替换操作************************ */
    if (type === "set") {
        const selectId = event.selectId
        const data = event.data
        await todos.doc(selectId).set({
            data: data
        })

    }

    /******************数据库记录删除操作*********************************** */
    if (type === "remove") {
        //查询数据库操作
        const isSelectId = event.isSelectId
        console.log("isSelect", isSelectId)
        //利用id 查询唯一一条记录
        if (isSelectId) {
            const selectId = event.selectId
            console.log("selectID", selectId)
            await todos.doc(selectId).remove().then(res => {
                console.log(res)
                result = res
                errMsg = res.errMsg
            }).catch(res => {
                console.log(res)
                result = res
                errMsg = res.errMsg
            })
        } else {
            //利用 where 条件查找
            const whereContent = event.whereContent
            await todos.where(whereContent).remove().then(res => {
                console.log(res)
                result = res
                errMsg = res.errMsg
            }).catch(res => {
                console.log(res)
                result = res
                errMsg = res.errMsg
            })
        }
    }


    //数据库模糊查找
    if (type === "like") {
        let value = event.value
        let fields = event.fields
        console.log("like value", value)
        console.log("like fields", fields)


        await todos.where(_.or(fields)).get().then(res => {
            console.log(res)
            result = res
            errMsg = res.errMsg
        }).catch(res => {
            console.log(res)
            result = res
            errMsg = res.errMsg
        })


        //console.log("or OBJ",orObj)




    }



    //console.log("err",errMsg)
    //console.log("result:")
    //console.log("result:")
    console.log("result:", result)
    return await {
        event,
        openid: wxContext.OPENID,
        appid: wxContext.APPID,
        unionid: wxContext.UNIONID,
        dataInfo: result,
        errMsg: errMsg
    }
}

版权声明:本文为dododododoooo原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。