一碗白菜豆腐 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 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置