- 当前 Bug 的表现(可附上截图)
- 预期表现
- 复现路径
- 提供一个最简复现 Demo
const cloud = require( 'wx-server-sdk' ) cloud.init() const db = cloud.database() const MAX_LIMIT = 100 exports.main = async (event, context) => { // 先取出集合记录总数 const countResult = await db.collection( 'company' ).where(event).count() const total = countResult.total // 计算需分几次取 const batchTimes = Math.ceil(total / 100) // 承载所有读操作的 promise 的数组 const tasks = [] for (let i = 0; i < batchTimes; i++) { const promise = db.collection( 'company' ).where(event).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get() tasks.push(promise) } // 等待所有 return (await Promise.all(tasks)).reduce((acc, cur) => { return { data: acc.data.concat(cur.data), errMsg: acc.errMsg, } }) } |
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce
reduce 缺少了第二个参数
const promise = db.collection(
'company'
).where(event).skip(i*MAX_LIMIT).limit(MAX_LIMIT).get()
您好,是这样的,我调试的时候发现上面这个查询语句,在本地调试的时候可以获得数据库里的数据,后续的return是可以正常运行的,但是上传之后,这里返回的数据为[],导致了后面的return部分报错,我想请教的是这个的问题。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce
reduce() 缺少初始值,也就是第二个参数
类似于这样:
return
(await Promise.all(tasks)).reduce((acc, cur) => {
return
{
data: acc.data.concat(cur.data),
errMsg: acc.errMsg,
}
}, {data: [], errMsg:
''
})
const promise = db.collection(
'company'
).where(event).skip(i*MAX_LIMIT).limit(MAX_LIMIT).get()
您好,是这样的,我调试的时候发现上面这个查询语句,在本地调试的时候可以获得数据库里的数据,后续的return是可以正常运行的,但是上传之后,这里返回的数据为[],导致了后面的return部分报错,我想请教的是这个的问题。
哦,原来理解成后边的问题了。建议先试着打印 本地和远程的查询条件是否一致,如果一致的话,返回数据是否相同。如果还未解决可以继续回复。我这边也继续看一下可能有什么问题。
查询条件是通过event参数传过去的,本地调试的时候也是用的模拟器点击触发,都可以正常执行,但是上传之后就为空了。查询条件很简单,我定义了商户的分类,这里传值的内容就是{"type":0}。
请问我应该如何修改呢?
请问这个问题还在关注吗?