qingtong
qingtong
  • 发布:2024-12-26 11:59
  • 更新:2024-12-26 13:48
  • 阅读:21

【报Bug】支付宝小程序云,数据库更新操作符删除字段指令remove() ,连接本地云函数运行正常,连接云端云函数无效

分类:uniCloud

产品分类: uniCloud/支付宝小程序云

示例代码:

const db = uniCloud.database();
const dbCmd = db.command
let res = await db.collection('todos').doc('todo-id').update({
style: dbCmd.remove()
})
console.log(res);

操作步骤:

删除数据表'todos'中,id为'todo-id'数据的”style“字段。
连接本地云函数运行可正常删除,连接支付宝云无法删除!

预期结果:

删除”style“字段,返回{updated: 1}

实际结果:

未删除”style“字段,返回{updated: 0}

bug描述:

最近使用uni-id-pages组件时发现,调用uni-id-co云对象解绑微信接口 uniIdCo.unbindWeixin() 无法解绑微信。
仔细检查发现问题出在:数据库更新操作符删除字段指令remove(),在云端云函数使用时无效。连接本地云函数测试正常。

2024-12-26 11:59 负责人:无 分享
已邀请:
杨杨得亿

杨杨得亿 - 这个人很懒,什么都没有留下~

调用云函数

// 假设我们要删除用户记录中的某个字段  
const db = uniCloud.database();  

// 云函数名称  
const removeField = 'removeField';  

// 执行删除字段操作  
exports.main = async (event, context) => {  
  const { userId } = event;  
  try {  
    await db.collection('users').doc(userId)  
      .update({  
        // 使用remove()删除字段  
        remove: ['fieldToRemove']  
      });  
    return {  
      success: true,  
      message: '字段删除成功'  
    };  
  } catch (err) {  
    return {  
      success: false,  
      message: '字段删除失败',  
      error: err  
    };  
  }  
};

云函数的本地代码(/functions/removeField/index.js):

// 云函数入口文件  
const cloud = require('wx-server-sdk');  

cloud.init();  
const db = cloud.database();  

// 云函数入口函数  
exports.main = async (event, context) => {  
  const wxContext = cloud.getWXContext();  
  // 云函数的具体逻辑  
  // ...  
};

在这个示例中,我们首先在前端指定了要删除的字段名称fieldToRemove,然后在云函数中通过remove()操作符将其从数据库记录中移除。

注意:在实际部署云函数时,需要在/cloudfunctions/removeField/package.json中配置依赖,并在阿里云云开发控制台创建并配置云函数。

  • qingtong (作者)

    感谢回复!

    这段代码在支付宝云端云函数是测试过了吗?

    我测试的结果是连接本地云函数,使用remove()操作符删除字段正常。使用连接阿里云云函数也正常。

    但在支付宝云函数就不行了,无法删除字段。

    问题应该不是出在代码上。

    希望哪位大神能在支付宝云测试 一下,看能否复现我的问题?

    2024-12-26 22:20

  • 风之源

    回复 qingtong: 我也遇到这个问题了,但是我的不是返回updated:0,是直接报错invalid update。然后我直接把remove相关的代码屏蔽了

    2024-12-27 01:26

要回复问题请先登录注册