谢老师:请问为何AppData明明看到有了一个数组(通过云函数BookingList调取的数据库中user'集合的数据),但始终没法渲染出来的原因,代码余下,求解答,感谢!

来源:4-3 电影列表

幕布斯6574152

2019-12-05 00:04

//云函数BookingList

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

cloud.init()

const db = cloud.database()

const MAX_LIMIT = 100

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

// 先取出集合记录总数

const countResult = await db.collection('user').count()

const total = countResult.total

// 计算需分几次取

const batchTimes = Math.ceil(total / 100)

// 承载所有读操作的 promise 的数组

const tasks = []

for (let i = 0; i < batchTimes; i++) {

const promise = db.collection('user').skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()

tasks.push(promise)

}

// 等待所有

return (await Promise.all(tasks)).reduce((acc, cur) => {

return {

data: acc.data.concat(cur.data),

// errMsg: acc.errMsg,

}

})

}



//'user'集合中有一个数据库为:

  • "XXXd81"

  • "_openid":

    "XXXko"

  • "date":

    "2019-12-02"

  • "region":

    "广东省,XX市,XX区"

  • "Name":

    "类型名称"

  • "rubbishWeight":

    "8"

  • "totalPrice":

    "3"

  • "userAdress":

    "XX园"

  • "userMobile":

    "189XXXXX"

  • "userName":

    "姓名"

  • "way":

    "晚上18:00-21:00"





// pages/shou/shou.js

const db = wx.cloud.database(); //初始化数据库

Page({

/**

  * 页面的初始数据

  */

data: {

bookingArr: []

},

onLoad: function(options) {

// 调用云函数'BookingList;

wx.cloud.callFunction({

name: 'BookingList'

}).then(res => {

console.log('调用云函数BookingList的结果:', res)

this.setData({

bookingArr: res.result.data

})

}).catch(err => {

console.log('调用云函数BookingList失败', err)

})

},


写回答 关注

5回答

  • 幕布斯6574152
    2019-12-05 22:14:59

    <!--显示日期-->

    <view class="booking" wx:for="{{bookingArr}} "wx:key="{{index }}" >日期: {{item.date}}</view>


    页面是上面这样写的,但 {{item.date}}没有渲染出内容。





  • 幕布斯6574152
    2019-12-05 21:55:20

    补充:如果增加一句打印显示bookingArr的语句“console.log('显示bookingArr的结果:', bookingArr)”在:

    onLoad: function(options) {

    // 调用云函数'BookingList;

    wx.cloud.callFunction({

    name: 'BookingList'

    }).then(res => {

    console.log('调用云函数BookingList的结果:', res)

    this.setData({

    bookingArr: res.result.data

    })

    console.log('显示bookingArr的结果:', bookingArr)

    }).catch(err => {

    console.log('调用云函数BookingList失败', err)

    })


    则会增加一条报错显示:

    调用云函数BookingList失败 ReferenceError: bookingArr is not defined

        at quanbudingdan.js? [sm]:52


  • 幕布斯6574152
    2019-12-05 21:49:14

    补充:无论写成 bookingArr: res.result 还是 bookingArr: res.result.data,都没法渲染出来?

  • 幕布斯6574152
    2019-12-05 21:44:36


    调试器下面显示的是:

    调用云函数BookingList的结果: {errMsg: "cloud.callFunction:ok", result: {…}, requestID: "cd8408ce-1763-11ea-8bd4-525400a88e2e"}

    展开此结果为:

    • {errMsg: "cloud.callFunction:ok", result: {…}, requestID: "38099390-1764-11ea-841d-525400b2c41b"}

    1. errMsg: "cloud.callFunction:ok"

    2. requestID: "38099390-1764-11ea-841d-525400b2c41b"

    3. result:

      1. data: Array(1)

        1. 0:

          1. date: "2019-12-02"

          2. region: "广东省,XX市,XX区"

          3. rubbishName: "类型名称"

          4. rubbishWeight: "8"

          5. totalPrice: "3"

          6. userAdress: "XX园"

          7. userMobile: "189XXXXX"

          8. userName: "姓名"

          9. way: "晚上18:00-21:00"

          10. _id: "XXXd81"

          11. _openid: "XXXko"

          12. __proto__: Object

        2. length: 1

        3. nv_length: (...)

        4. __proto__: Array(0)

      2. errMsg: "collection.get:ok"

      3. __proto__: Object

    4. __proto__: Object


    我是不是因为下面这个赋值式子写错,但不知道如何修改才能在wxml正确渲染出来:

    this.setData({

    bookingArr: res.result

    })

    能否帮忙修改这个赋值式子?感谢!

  • 谢成
    2019-12-05 09:40:16

    首先看下调试器中输出的res内容是什么:

    http://img2.mukewang.com/5de85fc100017ed113760920.jpg

    然后看下页面上显示bookingArr的地方是否有问题。

轻松入门微信小程序与云开发

深入浅出微信小程序核心基础与云开发,使你掌握小程序开发必备技能。

64635 学习 · 1742 问题

查看课程

相似问题