编写了一个需要频繁查询数据库的云函数(一次运行大约查询读写 各5000次,运行时间30秒),遇到如下问题:在本地调试,频繁出现-501001错误;函数放在云端运行,一切正常。错误如下:
-501001 resource system error | errMsg: collection.get:fail ESOCKETTIMEDOUT
请问这个错误是因为频繁查询导致本地调试器断线嘛?还是说在代码实现方面有什么效率瓶颈问题?
附上代码:
for ( let j=0; j<data.length; j++){
var openid = data[j]._id
var history = data[j].read_history
const tasks = []
console.log (openid)
//处理这个文章id数组
for( let k=0; k<history.length; k++ ){
let self = history[k]
let others = []
history.forEach(element=>{
if ( element !== self){
others.push(element)
}
})
if ( others.length === 0 ){
continue
}
let relate = {}
let isexist = await db.collection(ARTICLES_DYNAMIC_COLL).where({
_id: self
}).get()
//新添加
if ( isexist.data.length === 0){
others.forEach( element=>{
let str = `${element}`
relate[str] = INC_ONE
})
res = await db.collection(ARTICLES_DYNAMIC_COLL).add({
data: {
_id:self,
read_num: INC_ONE,
relate,
}
})
}else if ( isexist.data.length === 1) {
others.forEach( element=>{
let str = `${element}`
relate[str] = _.inc(INC_ONE)
})
res = db.collection(ARTICLES_DYNAMIC_COLL).doc(self).update({
data: {
read_num: _.inc(INC_ONE),
relate,
}
})
tasks.push(res)
}
同问。