云函数开发的商品购物。 提交商品后,对应的多个商品库存更新怎么写。 循环试过了,只更新了一个商品的库存。比如:goods表中的2个商品,一个商品库存减1,另一个商品库存减2.。。。
请求参数:
{
"goodsList": [
{
"goodsId": "658e9e57609bef840c82083f6725cf32",
"number": 1
},{
"goodsId": "28ee4e3e60a70e8b1a9844532b52fb5a",
"number": 2
}
]
}
云函数:
let goodsList = event.goodsList;
goodsList.forEach(item => {
db.collection('goods').doc(item.goodsId).update({
data: {
stock: _.inc(-item.number)
}
})
})
要怎么修改?以及return要怎么写
可以打下日志看下两个地方:
return 修改结果就行
云函数里,云数据库脚本调用,看不到“await”字样,基本是出错的。
db.collection('goods')前加上await,会报错。 查了文档,云函数貌似并没有一次按要求更新多条数据的,只能想到去循环更新, 所以大概需求就是: 云函数循环更新数据的时候,怎么去写
errCode: -404011
errMsg: "Error: cloud.callFunction:fail -404011 cloud function execution error. 云函数执行错误↵云端堆栈信息(error stack)(requestId 415d8fae-c35f-11eb-a778-525400e5615d, callid 1622609944817-0.8297830677816211):↵Runtime.UserCodeSyntaxError: SyntaxError: await is only valid in async function↵ at Object.module.exports.load (/var/runtime/node10/UserFunction.js:33:13)↵ at Runtime.handleOnce (/var/runtime/node10/Runtime.engine.js:97:38)↵ at Timeout.setTimeout [as _onTimeout] (/var/runtime/node10/Runtime.engine.js:54:12)↵ at ontimeout (timers.js:436:11)↵ at tryOnTimeout (timers.js:300:5)↵ at listOnTimeout (timers.js:263:5)↵ at Timer.processTimers (timers.js:223:10)"