这是一段云函数内的代码,用于返回云数据库中users集合内目标用户记录的packages字段,packages字段为数组类型。
async function getUsingPackages(userOpenid) {
let userData = await db.collection('users').where({
_openid: userOpenid
}).get( )
let usingPackages = userData.data[0].packages
return usingPackages
}
exports.main = async (event, context) => {
let usingPackages = getUsingPackages(event.userOpenid)
for(let usingPackage of usingPackages) {
if(usingPackage == event.packageId) {
return false
}
}
return true
}
在请求云函数时运行报错,显示云函数入口函数中的usingPackages不是可迭代对象。尝试将云函数入口函数调试更改为
exports.main = async (event, context) => {
return getUsingPackages(event.userOpenid)
}
此时可以正常返回数组packages到result中,将入口函数更改为
exports.main = async (event, context) => {
let usingPackages = getUsingPackages(event.userOpenid)
if(Array.isArray(usingPackages)) return true
return false
}
此时返回的result为false,将getUsingPackages函数更改为
async function getUsingPackages(userOpenid) {
let userData = await db.collection('users').where({
_openid: userOpenid
}).get( )
let usingPackages = userData.data[0].packages
if(Array.isArray(usingPackages)) return true
return false
}
并将入口函数更改回
exports.main = async (event, context) => {
return getUsingPackages(event.userOpenid)
}
此时返回的result变成了true。
即云函数内getUsingPackages返回的数组类型只能作为result整体返回,不能在getUsingPackages外读取,否则会被认为不是数组类型。
