收藏
回答

同样的代码,云函数中使用where语句查询数据,导出excel表中无数据,不使用where则有数据?

代码1:使用where查询
// 云函数入口文件
const cloud = require('wx-server-sdk');


cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const xlsx = require('node-xlsx');
let db = cloud.database();
const comd = db.command;


// 云函数入口函数
exports.main = async (event, context) => {
     try{  
        //let userdata = await db.collection('Data_cj').get();
        let start_time = event.start;
        let end_time = event.end;
        let khbm = event.khbm;
        let userdata;
        if(khbm == ""){
            userdata = await db.collection('Data_cj').where({
                cj_pdrq:comd.gte(start_time).and(comd.lte(end_time))
            }).get();
         }else{
            userdata = await db.collection('Data_cj').where({
                cj_pdrq:comd.gte(start_time).and(comd.lte(end_time)),
                cj_khbm:khbm,
            }).get();
         }
        console.log(userdata);
        //定义excel表格名
        let dataCVS ='test.xlsx';
        let alldata = [];
        //表属性
        let row = ['客户姓名','客户编码','商品条码','商品包码','商品名称','单包零售价格','条装零售价格','市场批发价','订货电话','经营地址','盘点日期','当前库存量','断货天数'];
        alldata.push(row);
        console.log(alldata);


        for(let i=0;i<userdata.data.length;i++){
            let arr =[];
            let key="data";
            arr.push(userdata[key][i].cj_khxm);
            arr.push(userdata[key][i].cj_khbm);
            arr.push(userdata[key][i].cj_tiaoma);
            arr.push(userdata[key][i].cj_baoma);
            arr.push(userdata[key][i].cj_spmc);
            arr.push(userdata[key][i].cj_dbjg);
            arr.push(userdata[key][i].cj_tzjg);
            arr.push(userdata[key][i].cj_pfjg);
            arr.push(userdata[key][i].cj_dhdh);
            arr.push(userdata[key][i].cj_jydz);
            arr.push(userdata[key][i].cj_pdrq);
            arr.push(userdata[key][i].cj_dqkc);
            arr.push(userdata[key][i].cj_dhts);
            alldata.push(arr);
        };
        console.log(alldata);


        //把数据保存到excel
        let buffer = await xlsx.build([
            {
                name:"test",
                data:alldata
            }
        ]);


        //把excel文件保存到云存储里
        return await cloud.uploadFile({
            cloudPath:dataCVS,
            fileContent:buffer,//excel二进制文件
        })
     }catch(e){
         console.error(e);
         return e;
     }
}
代码2:不使用where查询
// 云函数入口文件
const cloud = require('wx-server-sdk');


cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境
const xlsx = require('node-xlsx');
let db = cloud.database();
const comd = db.command;


// 云函数入口函数
exports.main = async (event, context) => {
     try{  
        let userdata = await db.collection('Data_cj').get();
        // let start_time = event.start;
        // let end_time = event.end;
        // let khbm = event.khbm;
        // let userdata;
        // if(khbm == ""){
        //     userdata = await db.collection('Data_cj').where({
        //         cj_pdrq:comd.gte(start_time).and(comd.lte(end_time))
        //     }).get();
        //  }else{
        //     userdata = await db.collection('Data_cj').where({
        //         cj_pdrq:comd.gte(start_time).and(comd.lte(end_time)),
        //         cj_khbm:khbm,
        //     }).get();
        //  }
        console.log(userdata);
        //定义excel表格名
        let dataCVS ='test.xlsx';
        let alldata = [];
        //表属性
        let row = ['客户姓名','客户编码','商品条码','商品包码','商品名称','单包零售价格','条装零售价格','市场批发价','订货电话','经营地址','盘点日期','当前库存量','断货天数'];
        alldata.push(row);
        console.log(alldata);


        for(let i=0;i<userdata.data.length;i++){
            let arr =[];
            let key="data";
            arr.push(userdata[key][i].cj_khxm);
            arr.push(userdata[key][i].cj_khbm);
            arr.push(userdata[key][i].cj_tiaoma);
            arr.push(userdata[key][i].cj_baoma);
            arr.push(userdata[key][i].cj_spmc);
            arr.push(userdata[key][i].cj_dbjg);
            arr.push(userdata[key][i].cj_tzjg);
            arr.push(userdata[key][i].cj_pfjg);
            arr.push(userdata[key][i].cj_dhdh);
            arr.push(userdata[key][i].cj_jydz);
            arr.push(userdata[key][i].cj_pdrq);
            arr.push(userdata[key][i].cj_dqkc);
            arr.push(userdata[key][i].cj_dhts);
            alldata.push(arr);
        };
        console.log(alldata);


        //把数据保存到excel
        let buffer = await xlsx.build([
            {
                name:"test",
                data:alldata
            }
        ]);


        //把excel文件保存到云存储里
        return await cloud.uploadFile({
            cloudPath:dataCVS,
            fileContent:buffer,//excel二进制文件
        })
     }catch(e){
         console.error(e);
         return e;
     }

}

不使用where查询则导出excel有数据:

使用where查询则导出excel无数据:

同样的查询条件,不知道为什么会这样,请各位大神协助,不胜感激!

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

2 个回答

  • 陈宇明
    陈宇明
    2023-07-06

    检查下条件参数

    2023-07-06
    有用
    回复
  • 微盟
    微盟
    2023-06-28

    检查下where语句哪里是否满足条件

    2023-06-28
    有用
    回复 1
    • 小旭
      小旭
      2023-06-29
      我检查很多次了啊,我什么都没懂,只是加了个where,参数那些都是打断点确定了的,没有问题。并且控制台也显示数据正常,但是导出后就是没数据。
      2023-06-29
      回复
登录 后发表内容