一碗白菜豆腐 2019-02-25 16:31 采纳率: 44.4%
浏览 1883
已结题

微信小程序关于多张图片上传之后,路径却存不到数据库中的问题

第一部分

 var imageslist = [];   //设置了一个空数组进行储存图片云端路径
    var images = that.data.images;
    for (var i = 0; i < images.length; i++) {
      let randString = Math.floor(Math.random() * 1000000).toString() + '.png'
      wx.cloud.uploadFile({
        cloudPath: randString,
        filePath: images[i], 
        success: res => {
        //let imageslist = that.data.imageslist;
         imageslist.push(res.fileID) ; //将图片路径添加到数组中
        },
        fail: err => {
          wx.showToast({
            title: '图片上传失败',
          })
        }
      })
    }
   that.setData({
      imageslist
    })
    console.log(imageslist);//打印

打印结果为

[]
0: "cloud://mycheng-d9e08f.6d79-mycheng-d9e08f/794476.png"
1: "cloud://mycheng-d9e08f.6d79-mycheng-d9e08f/19686.png"
length: 2
nv_length: (...)
__proto__: Array(0)

_然后存到数据库中

  db.collection('topic').add({
      data: {
        index: 0,
        content: that.data.content,
        des: that.data.des,
        style: "book",
        date: new Date().toLocaleString(),
        images: that.data.imageslist,//这个地方存到数据库
        userInfo: that.data.userInfo,
        isLike: that.data.isLike,
      },

结果却是在数据库中显示images为空

  • 写回答

1条回答 默认 最新

  • gpwang4000 2019-02-25 17:09
    关注

    这个打印位置不对,wx.cloud.uploadFile是异步函数,for循环已经完毕时wx.cloud.uploadFile还未完成
    所以for循环后面的语句是无效的

    应该在success中进行计数,当数量满足要求时进行setdata和打印

    评论

报告相同问题?

悬赏问题

  • ¥15 stm32流水灯+呼吸灯+外部中断按键
  • ¥15 将二维数组,按照假设的规定,如0/1/0 == "4",把对应列位置写成一个字符并打印输出该字符
  • ¥15 NX MCD仿真与博途通讯不了啥情况
  • ¥15 win11家庭中文版安装docker遇到Hyper-V启用失败解决办法整理
  • ¥15 gradio的web端页面格式不对的问题
  • ¥15 求大家看看Nonce如何配置
  • ¥15 Matlab怎么求解含参的二重积分?
  • ¥15 苹果手机突然连不上wifi了?
  • ¥15 cgictest.cgi文件无法访问
  • ¥20 删除和修改功能无法调用