收藏
回答

只在真机调试时 云函数才出现调用失败

问题模块 框架类型 问题类型 终端类型 AppID 基础库版本
云开发 小程序 Bug 客户端 wx5cdefdd8bc64a31b 2.3.0

- 此为真机调试时出现的 bug


错误代码为 -404006


在开发者工具中则不会出现此种错误


- 预期表现


- 复现路径


- 提供一个最简复现 Demo


云函数名称为 `functions/booklist/indexjs`:


```js

// 云函数入口文件

const cloud = require('wx-server-sdk')


cloud.init()


// 云函数入口函数

exports.main = async (event, context) => {

const { page: offset } = event

const limit = 10 // 限制

const skip = offset * limit // 分页


try {

const db = cloud.database()

const col = db.collection('books')


return await col.skip(skip).limit(limit).orderBy('addDate', 'desc').get()

} catch (error) {

return {

code: -1,

data: {

msg: `获取列表失败 ${error}`

}

}

}

}

```


接口调取逻辑:


```js

async getBookList (init) { // 增加 init 参数,如果 init 为 true 则永远加载第一页

console.log('loading ', this.page)


wx.showNavigationBarLoading()

wx.showLoading({

title: 'Loading...',

mask: true

})


if (init) {

this.page = 0

this.ifNoMoreData = false // 若初始化则仍然有数据

}


let res

try {

res = await wx.cloud.callFunction({

name: 'booklist',

data: { page: this.page }

})

res = res.result.data

// 数据获取成功

if (res.length < 10 && this.page > 0) { // 如果数据不足 10 条则配置 ifNoMoreData 为 true

this.ifNoMoreData = true

}

} catch (error) {

console.log('call func ', error)

}


// 处理下拉刷新

if (init) {

this.booklist = res

wx.stopPullDownRefresh() // 关闭下拉刷新

} else {

// 处理触底加载

this.booklist = this.booklist.concat(res)

}


wx.hideLoading()

wx.hideNavigationBarLoading()

},

```



最后一次编辑于  2018-09-28  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答