一、问题描述
比如说,在前端页面需要录入三种水果的数量和价格,形成一个数组,存放在data对象中。那么,如何把这个数组,通过云函数,一次性写入到数据库中?
data对象内容如下:
data: {
dtlist: [{ //三种水果,对象数组,title对应数据库中字段
name: '香蕉',
number: 121,
price: 2,
date: '2021-01-09',
}, {
name: '西瓜',
number: 212,
price: 1,
date: '2021-01-09',
}, {
name: '橘子',
number: 321,
price: 2,
date: '2021-01-09',
}]
},
二、云函数端写法
在could的functions中创建名为addtst的云函数文件。并在该文件中定义写入数据库方法,部分代码如下:
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
const db = cloud.database()
return await db.collection('tst').add({ //tst-云数据库名
data: event.dtlist //对象数组
})
}
修改完成后,一定要记得点击上传,才能让修改后的文件生效。
三、前端调用云函数
在微信前端页面中,需要用到云函数的地方,通过wx.cloud.callFunction()来实现对addtst云函数的调用,通过其中name属性指定要调用的云函数名。具体调用云函数写法如下:
writeDataTODbase() {//把数据写入到数据库中
wx.cloud.callFunction({
name: 'addtst',//云函数名
data: {
dtlist: this.data.dtlist //对象数组
}
}).then(res => {
console.log('数组写入成功:', res)
}).catch(res => {
console.log('数组写入失败:', res)
})
}
四、返回结果如下:
通过以上操作可以看到最终能成功返回结果。如图所示。