终于找到了正确有效的方法,贴出来分享。 1、云函数(自定义名称:updateStandardItem) // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境 // 云函数入口函数 exports.main = async (event, context) => { return await cloud.database() .collection('hl_standard') .doc(event._id) .update({ data: { [`items.${event.index}.enable`]: event.enable, [`items.${event.index}.type`]: event.type, [`items.${event.index}.title`]: event.title, [`items.${event.index}.number`]: event.number, } }).then(res => { return res }) .catch(err => { return err }) } //构造data是核心!小程序端需要传集合名称(如:hl_standard)、要修改的数组中的对象的索引(不需要关注对象的唯一ID,本例中是“id”,我这里索引是个变量“index”),然后就是要修改的字段的值。 2、小程序端 //修改检查项的可用状态 changeEnable(e) { //获取前端传值standard_id, item_id let _standard_id = e.currentTarget.dataset.standard_id let _enable = e.currentTarget.dataset.item.enable let _index = e.currentTarget.dataset.index wx.cloud.callFunction({ name: 'updateStandardItem', data: { _id: _standard_id, index: _index, enable: !_enable, } }) .then(res => { console.log(res) }).catch(err => { console.log(err) }) }
云开发中如何根据集合中记录的_id及所包含的对象数组的id更新对象数组中的某一字段值?集合数据结构如下图: [图片] 业务需求:修改items中某一个对象的enable属性的值,如:enbale=false, 借鉴交流专区其他提问的答案,执行显示成功,但是数据并没有更新。请问如何修改? [图片] js代码如下: //修改检查项的可用状态 changeEnable(e) { //获取前端传值standard_id, item_id let _standard_id = e.currentTarget.dataset.standard_id let _item_id = e.currentTarget.dataset.item.id let _enable = e.currentTarget.dataset.item.enable let _index = e.currentTarget.dataset.index console.log(_index, _standard_id, _item_id, _enable)//能够正常获取到值 wx.cloud.database() .collection('hl_standard') .where({ '_id': _standard_id, 'id': _item_id }) .update({ data: { 'items.$.enable': !_enable } }) .then(res => { console.log(res) }).catch(err => { console.log(err) }) }
2023-03-24图一的意思是:pages/index/index的wxml文件中有一个button或view组件,bindtap=“changeItem”,但是index.js中没有定义这个函数。 /*pages/index/index.js*/ Page{ data:{ }, onLoad(options){ }, //请编写changeItem函数 changeItem(e){ } } 第二张图片显示work.js有问题,意思是“不支持”。 供参考。
各位大佬帮帮小白看看这个是什么问题?[图片][图片]
2023-03-24你的代码写的有问题,collection(name)应该写成collection(‘name’),改了试一下? db.collection(name).where( { theme: mytext } ).get()
小程序云端函数 where遇到的问题?db.collection(name).where( { theme: mytext } ).get() 上面的mytext是函数传的参数,string 类型 值是‘山水’ ,获取不到数据 db.collection(name).where( { theme: ‘山水’ } ).get() 上面直接用字面量 ‘山水’就可以获得数据 这是为什么呢?如何解决!
2023-03-24