收藏
回答

云存储中的上传图片File.ID返回值不能全部技术记录入数据库

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 微信安卓客户端 wx170d78396081e285 env-1gz2buk367a05f5c 2.11.1
云存储中的上传图片File.ID返回值不能全部及时记录入数据库

wx.cloud.init{env:'env-1g'})

      var FilePaths = []  

      let promiseArr = [];

      for (let i = 0;i< this.data.imgList.length ; i++{

        let promise = new Promise((resolve, reject) => {

          var randstring = Math.floor(Math.random() * 100).toString() + '.png'

          randstring =  randstring

          wx.cloud.uploadFile({

            cloudPath: 'newsImages/' + randstring,

            filePath: this.data.imgList[i], // 文件路径

            success: res => {

              // get resource ID

              console.log(res.fileID)

              FilePaths[i= res.fileID

              resolve(res);

            },

            fail: err => {

              reject(error);

            }

          })

        })

        promiseArr.push(promise)

      }


      if (this.data.imgList1.length != 0{

        this.setData({

          imgList1: this.data.imgList1.concat(FilePaths)

        })

      } else {

        this.setData({

          imgList1: FilePaths

        })

        console.log(this.data.imgList1[1])

      }

      wx.hideLoading()

       /*云数据库记录*/

       const db = wx.cloud.database({

        env: 'env-'

      })

      //const diliId = db.collection('enginerInformation')

      var data1={_id:"1egwgrr 66",

          otherAccountId: "9xgbb2",

          pictureFileId1:this.data.imgList1,

          

          userId:"2sdskjhjjj就"}

      db.collection('enginerInformation').add({

        data:{

          data1

        } ,

        success: function(res) {

          // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id

          console.log(res)

        } 

      })



上传图片file.id不能及时写入数据库

回答关注问题邀请回答
收藏

1 个回答

  • 人间无事人
    人间无事人
    2023-02-16

    我也之前也遇到这个问题了,离谱,我一开始是以为数据异步传输的问题,导致我数据没传递进去。

    后来发现 是数据库上传 在文件上传 之前就执行了 是uploadFile和callFunction的执行顺序问题

    我把云函数的执行,也就是上传数据库操作 放在complete里就可以

    wx.cloud.uploadFile({

              cloudPath: imageName, // 对象存储路径,根路径直接填文件名,文件夹例子 test/文件名,不要 / 开头

              filePath: item.value.tempFilePath, // 微信本地文件,通过选择图片,聊天文件等接口获取

              config: {

                env: '*******' // 微信云托管环境ID

              },

              success: res => {

                // 上传成功,替换图片或者视频路径

                item.value.fileID = res.fileID     

    },

              fail: error => console.log(error),

              complete: () => {

                // 调用云函数存储当前的内容content

                wx.cloud.callFunction({

                  name: 'upload',

                  data: {

                    content: this.data.content

                  },

                  success: (res) => {

                    console.log(res, this.data.content)

                  }

                })

                console.log("上传结束")

              }

            })

    我的代码,大家可以借鉴一下,如果有什么不对,欢迎指教

    2023-02-16
    有用
    回复
登录 后发表内容
问题标签