不知晚不晚
不知晚不晚
  • 发布:2022-04-18 19:45
  • 更新:2023-12-13 21:11
  • 阅读:413

云函数url化,groupby失败?

分类:uniCloud

云函数代码如下:
'use strict';
const db = uniCloud.database();
const dbCmd = db.command;
exports.main = async (event, context) => {
let body = event.body
if (event.isBase64Encoded) {
body = Buffer.from(body)
}
const param = JSON.parse(body)
let _id = param._id
let id=param.stockout_id
let date=param.date
let collection2 = db.collection("stockout_info")
let res = {}
switch (param.action) {
case 'total'://合计总数量
// 按品种汇总数量
const totalQty = await collection2.where({'stockout_id':id})
.groupBy('p_type')
.groupField('sum(qty) as totalQty')
.getTemp();
// 按品种汇总面积
const totalArea = await collection2.where({'stockout__id':id})
.groupBy('p_type')
.groupField('sum(area) as totalArea')
.getTemp();
// 按品种汇总延长米
const totalYCM = await collection2.where({'stockout_id':id})
.groupBy('kuang_type')
.groupField('sum(yanchangmi) as totalYCM')
.getTemp();
res = await db.multiSend(totalQty)
break;
default:
res = {
code: 404,
msg: 'NOT_FOUND'
}
break;
}
函数Url后,访问日志为


"queryStringParameters": {},  
"isBase64Encoded": false,  
"body": "{\"stockout_id\":\"CK20418161610\",\"action\":\"total\"}"  

},
"requestId": "ac140b831650276235910150301"
}
[stockout/ac140b831650276235910150301/2ms/ERROR] collection2.where(...).groupBy is not a function
TypeError: collection2.where(...).groupBy is not a function
at exports.main (/tmp/function/__index.js:139:6)
at i (/tmp/function/index.js:1:3060)
at d (/tmp/function/index.js:1:3511)
at runUserFunction (/code/index.js:118:207833)
at (<anonymous>)
at _tickCallback (internal/process/next_tick.js:189:7)
请求响应状态: fail
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
请问是哪里写错了?
数据表如下:


另外如何不用分组,统计所有的qty, area?能否用一条语句?谢谢!

2022-04-18 19:45 负责人:无 分享
已邀请:
呆狗的一生

呆狗的一生 - 呆狗的一生

groupBy是JQL的语法,你要开启JQL扩展。

// 把你的db改成如下  
let db = uniCloud.databaseForJQL({ event, context })  
 // pageage.json文件中添加  
    "extensions": {  
        "uni-cloud-jql": {}  
    },  
不知晚不晚

不知晚不晚 (作者)

我把云函数代码改为:
case 'total'://合计
res=collection2.aggregate()
.match({
stockout_id:id})
.group({
_id:'$p_type',
area:$.sum('$area'),
qty:$.sum('$qty'),
kuan:$.sum('$yanchangmi')
})
.end()
break;
结果为:

不知晚不晚

不知晚不晚 (作者)

可以看出,已经汇总出来了!但出汇总是进行了产品分组的,能不能不按产品分组,直接汇总area,qty,kuan呢?

不知晚不晚

不知晚不晚 (作者)

补充一下:
const $ = db.command.aggregate

2***@qq.com

2***@qq.com

好乱啊,就不能一套吗

要回复问题请先登录注册