- 需求的场景描述(希望解决的问题)
如下是我的代码,要实现的功能为:有两张表做联合查询,第一张表查询出若干条数据,然后根据这若干条数据查询第二张表,由于第一张表能查询出的数据条数是动态的,所以在查询第二张表时写了一个for循环,想在for循环里写一个数组把所有遍历到的数据写进去,但这个实现不了,因为数组是动态的,所以数组下标写为j,但这个j在for循环里每次读到的都是代码中arry_length这个值
db.collection('process_information_col').where({
process_chain: db.RegExp({
regexp: user_openid
woptions:'i'
})
}).get().then(res => {
console.log('user_openid', user_openid)
console.log('res.data', res.data)
console.log('res.data.length', res.data.length)
var arry_length = res.data.length
for (var j = 0; j < arry_length;j++){
db.collection('release_content_col').where({
_id: res.data[j].id_release_information
}).get().then(
res => {
console.log('j:', j)
console.log('分享记录:',res.data)
this.setData({
shareRecordData: res.data
})
}).catch(err => {
console.log('[查询失败]')
})
}
}).catch(err => {
console.log('[查询失败]')
})
}
- 希望提供的能力
for (var j = 0; j < arry_length;j++){ 改成let j=0试试。
十分感谢!改成let 后解决,但为啥写成var不行呢
let只在就近的函数块里生效,不会被函数外部影响
ok 多谢