只要上传图片就显示在评论中,后台也不报错,并且对应的图片fileId在控制台已经显示

来源:4-5 电影评价

qq_精慕门9215320

2019-07-12 11:54

// pages/comment/comment.js

wx.cloud.init();

var db = wx.cloud.database();

Page({


/**

  * 页面的初始数据

  */

data: {

moviedatails:'',

content:'', //评价的内容

score:5, //当前评价分数

images:[], //上传的图片

movieId:-1,

fileIds:[], //图片id

},


//评价对应函数

onContentChange:function(event){

//event.detail为当前输入的值

this.setData({

content:event.detail

})

},

//星级打分对应函数

onScoreChange:function(event){

this.setData({

score: event.detail

})

},

//图片选择

uploadImg:function(){

//这里定义this是为了让下面chooseImage方法中的this仍然是pages对象中的,否则会报‘ Cannot read property 'setData' of null’错误

//另外一种方法,使用箭头函数,将function(res){}修改为res=>{}

var mythis = this;

//选择图片,从本地相册选择或拍摄

wx.chooseImage({

count:9,

sizeType:['original','compressed'],

sourseType:['album','camera'],

success: function(res) {

//tempFilePaths可以作为img标签的src属性显示图片

const tempFilePaths = res.tempFilePaths;

console.log(tempFilePaths)

mythis.setData({

images: mythis.data.images.concat(tempFilePaths)

})

}

})

},

submit:function(){

wx.showLoading({

title: '评论中',

})

var promiseArray = []; //异步操作数组

for(var i=0;i<this.data.images.length;i++){

promiseArray.push(new Promise((resolve,reject)=>{

var item = this.data.images[i];

let suffix = /\.\w+$/.exec(item)[0]; // 正则表达式,返回文件扩展名

wx.cloud.uploadFile({

cloudPath:new Date().getTime() + suffix,

filePath:item,

success: res => {

// 返回文件 ID

console.log(res.fileID)

this.setData({

fileIds: this.data.fileIds.concat(res.fileID)

});

reslove();

},

fail: console.error

})

})

)

}

Promise.all(promiseArray).then(

res=>{

db.collection("comment").add({

data:{

comment: this.data.content,

score:this.data.score,

movieid:this.data.movieId,

fileIds: this.data.fileIds

}

}).then(

res=>{

wx.hideLoading()

wx.showToast({

title: '评论成功',

})

}

).catch(err=>{

wx.hideLoading()

wx.showToast({

title: '评论失败',

})

}

)

}

).catch(

err=>{

console.error(err)

}

)

},

/**

  * 生命周期函数--监听页面加载

  */  

onLoad: function (options) {

movieId: options.movieid

wx.cloud.callFunction({

name: "moviedetails",

data: {

movieid: options.movieid

}

}).then(res=>{

this.setData({

moviedatails:JSON.parse(res.result)

})

console.log(res)

}).catch(err=>{

console.log(err)

})

},


/**

  * 生命周期函数--监听页面初次渲染完成

  */

onReady: function () {


},


/**

  * 生命周期函数--监听页面显示

  */

onShow: function () {


},


/**

  * 生命周期函数--监听页面隐藏

  */

onHide: function () {


},


/**

  * 生命周期函数--监听页面卸载

  */

onUnload: function () {


},


/**

  * 页面相关事件处理函数--监听用户下拉动作

  */

onPullDownRefresh: function () {


},


/**

  * 页面上拉触底事件的处理函数

  */

onReachBottom: function () {


},


/**

  * 用户点击右上角分享

  */

onShareAppMessage: function () {


}

})


https://img4.mukewang.com/5d28047b0001d5e313370577.jpg



写回答 关注

2回答

  • 谢成
    2019-07-13 08:36:28

    ?很棒!自己解决了问题。

  • qq_精慕门9215320
    2019-07-12 14:01:04

    问题已经解决,是因为我resolve写的不对,上面写的是resolve,下面执行方法时,写的是reslove

    qq_精慕门...

    yes

    2019-07-12 14:04:18

    共 1 条回复 >

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

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

64554 学习 · 1742 问题

查看课程

相似问题