我也之前也遇到这个问题了,离谱,我一开始是以为数据异步传输的问题,导致我数据没传递进去。 后来发现 是数据库上传 在文件上传 之前就执行了 是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("上传结束") } }) 我的代码,大家可以借鉴一下,如果有什么不对,欢迎指教
云存储中的上传图片File.ID返回值不能全部技术记录入数据库云存储中的上传图片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不能及时写入数据库
2023-02-16