收藏
回答

云函数内部为何不能正常处理数组类型?

这是一段云函数内的代码,用于返回云数据库中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外读取,否则会被认为不是数组类型。

回答关注问题邀请回答
收藏
登录 后发表内容