小程序云函数数据库删除记录

小程序云函数删除数据库记录

下面是我最近在弄的一种功能,不是我没有接着上一篇文章,实在是最近比较忙没什么时间仔细的去写,这段时间忙完了,我接着之前的去写,下面是一种通过云函数删除数据的方法,那位博主是可以使用的,我不能使用,后来就进行了优化,在最下面我会贴出我的代码。

原文链接:https://blog.csdn.net/weixin_42248493/article/details/90755403
使用场景:长按图片,弹出对话框,点击确定,删除数据库中该条信息。

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

cloud.init({
env: ‘***’,//你的开发环境
traceUser: true
})
const db = cloud.database()
// 云函数入口函数
exports.main = async(event, context) => {
var id = event._id

try {
return await db.collection(‘bookInfo’).doc(id).remove()

} catch (e) {
console.log(e)
}
}
JS:

/**

  • 删除?
    */
    deleteBook: function(e) {
    var that = this;
    var title;
    var images = that.data.routers;
    var index = e.currentTarget.dataset.index; //获取当前长按图片下标
    wx.showModal({
    title: ‘提示’,
    content: ‘确定要删除该条图书信息吗?’,
    success: function(res) {
    if (res.confirm) {
    var bookName = that.data.routers[e.currentTarget.dataset.index].title;
    var id = that.data.routers[e.currentTarget.dataset.index]._id;
    images.splice(index, 1);
    //云函数删除
    wx.cloud.callFunction({
    name: “deleteBook”,
    data: {
    _id: id,
    },
    success: res => {
    console.log(id)
    wx.showToast({
    title: ‘[云函数] [deleteBook] 删除成功!!’,
    })
    console.log(’[云函数] [deleteBook] 删除成功!! ', res)

         wx.hideLoading();
       },
       fail: err => {
         wx.showToast({
           title: '[云函数] [deleteBook] 调用失败' + err,
         })
         console.error('[云函数] [deleteBook] 调用失败', err)
       }
     })
     //原生删除
     // const db = wx.cloud.database();
     // db.collection('bookInfo').doc(id).remove({
     //   success(res) {
     //     console.log(res.data)
     //   }
     // })
    

    } else if (res.cancel) {
    return false;
    }
    that.setData({
    routers: images
    });
    }
    })

}
代码中注释的“原生删除”也是可以实现删除功能 ,有问题 ,欢迎留言

以下是我的代码

云函数中
开发环境那里需要填写自己的,我这里吧我的给删掉了
** 写的过程中要仔细检查代码字母等,我就是因为某个字母找了几个小时的错误,程序没有报错就是想要的结果实现不了**

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

cloud.init({
  env: '',//开发环境
  traceUser: true,
})
const db = cloud.database()
// 云函数入口函数
exports.main = async (event, context) => {
  var id = event._id
  try {  //这里的image是云函数里面的集合名称 id 是记录的唯一标识
    return await db.collection('image').doc(id).remove()
  } catch (e) {
    console.log(e)
  }
}

页面的wxml代码
里面有一些与本篇文章不相关的代码
主要的话是
bindlongpress:长按删除
data-index:绑定index

<view class="main">
<image  wx:for="{{images}}" wx:key="index" src="{{item.fileID}}" mode="aspectFill" data-data="{{item}}" bindtap="previewImage" bindlongpress="deleteImage" data-index="{{index}}"></image>
</view>

JS页面

//删除图片
  deleteImage: function (e) {
    var that = this;
    var id;
    var images = that.data.images;
    let data = e.currentTarget.dataset.data;//获取当前长按图片这组数据
    var index = e.currentTarget.dataset.index;//获取当前长按图片下标
    wx.showModal({
      title: '提示',
      content: '确定要删除此图片吗?',
      success: function (res) {
        if (res.confirm) {
          var id = data._id;
          //云函数删除
        wx.cloud.callFunction({
          name: "pictureDeletion",
          data:{
            _id:id,
          },
          success: res => {
            images.splice(index, 1)
            that.setData({
              images:images
            })
            console.log(id)
            wx.showToast({
              title: '[云函数] [pictureDeletion] 删除成功!!',
            })
            console.log('[云函数] [pictureDeletion] 删除成功!! ', res)
            wx.hideLoading()
  
          },
          fail: err => {
            wx.showToast({
              title: '[云函数] [pictureDeletion] 调用失败' + err,
            })
            console.error('[云函数] [pictureDeletion] 调用失败', err)
          }
        })
        } else if (res.cancel) {
          console.log('点击取消了');
          return false;
        }
        that.setData({
          routers: images
        });
      }
    })
  },

我的这个JS代码与原作者的JS代码不同的地方是

//原作者
var images = that.data.routers;
var index = e.currentTarget.dataset.index; //获取当前长按图片下标
    wx.showModal({
      title: '提示',
      content: '确定要删除该条图书信息吗?',
      success: function(res) {
        if (res.confirm) {
     var bookName that.data.routers[e.currentTarget.dataset.index]._id;
          images.splice(index, 1);
          //云函数删除
          wx.cloud.callFunction({
            name: "deleteBook",
            data: {
              _id: id,
            },
            success: res => {
              console.log(id)

我的

var images = that.data.images;//这里的images是我定义了的数组
let data = e.currentTarget.dataset.data;//获取当前长按图片这组数据
var index = e.currentTarget.dataset.index;//获取当前长按图片下标

我是将原作者这句话进行了改下,这样在定义下面的时候会简洁一些
var id = that.data.routers[e.currentTarget.dataset.index]._id;

//原作者   
  var id = that.data.routers[e.currentTarget.dataset.index]._id;
// 我的
  var id = data._id;

数组结构图在这里插入图片描述
还以一个地方

//原作者
	   images.splice(index, 1);
          //云函数删除
          wx.cloud.callFunction({
            name: "deleteBook",
            data: {
              _id: id,
            },
            success: res => {
              console.log(id)
//云函数删除
        wx.cloud.callFunction({
          name: "pictureDeletion",// 这个是云函数的名称
          data:{
            _id:id,
          },
          success: res => {
            images.splice(index, 1)
            that.setData({
              images:images
            })

大家应该看到了,我将 images.splice(index, 1) 这句话从上面移动到了下面,这样就写进了云函数中,再setData这个数组就好了

声明一下:我这里并不是说原作者的不好或者有错误等等,因为我也是从原作者那里学着做的,我在写的过程中,自己这边有错误会报错,所以进行了改写。

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值