最近在赶一个微信小程序,打算从云数据库中查询到数据,然后通过setData方法放到data中,如下:
错误代码:
formSubmit:function(e)
{
var formData=e.detail.value;
const db = wx.cloud.database();
db.collection('book').where({
book_name: formData.book_name,
})
.get({
var that = this;
success: function (res) {
that.setData({
book_name_image:res.data[0].imageurl_1,
})
//在这之后代码不再执行,数据也没有放到data域中
wx.showToast({
title: formData.book_name,
})
}
})
},
没有报错,也没有反应,而且setData方法后的代码不再执行
原因
在get的success方法中的this不能完成setData方法
需要把
var that = this;
这个定义到get方法之前
成功代码如下:
formSubmit:function(e)
{
var formData=e.detail.value;
var that = this;//定义到这里,让that先获取到外面方法的this
const db = wx.cloud.database();
db.collection('book').where({
book_name: formData.book_name,
})
.get({
success: function (res) {
console.log(res.data[0].imageurl_1)
that.setData({
book_name_image:res.data[0].imageurl_1,
})
wx.showToast({
title: formData.book_name,
})
}
})
},