微信小程序笔记--数据库

这篇具有很好参考价值的文章主要介绍了微信小程序笔记--数据库。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

学习微信小程序 -- 数据库

数据库

1. 初始化

2. 数据库操作

2.1 数据类型云开发数据库提供以下几种数据类型:

2.2 增删查改

                 2.2.1 增加/插入 数据(add方法)

                 2.2.2 删除数据(remove方法)

                 2.2.3 查看数据(get,where)

                 2.2.4 更新数据(update / set)

3. 云函数

数据库

1. 初始化

查看官方文档:开发指引 -> 数据库 -> 增删改查 -> 初始化.

第一步: 获取数据库的引用 (要操作一个集合,需先获取它的引用。)
在开始使用数据库 API 进行增删改查操作之前,需要先获取数据库的引用(两种情况)。

  1. 以下调用获取 默认环境 的数据库的引用:
    	const db = wx.cloud.database();
    
  2. 如需获取 其他环境 的数据库引用,可以在调用时传入一个对象参数,在其中通过 env 字段指定要使用的环境。此时方法会返回一个对测试环境数据库的引用。
    示例:假设有一个环境名为 test,用做测试环境,那么可以如下获取测试环境数据库:
    	const testDB = wx.cloud.database({
    		env: 'test'
    	})		
    


    第二步:数据库里创建集合

    打开控制台,选择 “数据库” 标签页,通过 “添加集合” 入口创建一个集合。假设我们要创建一个待办事项小程序,我们创建一个名为 todos 的集合。创建成功后,可以看到 todos 集合管理界面,界面中我们可以添加记录、查找记录、管理索引和管理权限。集合 类似于 数据库

     集合 类似于 数据库
     集合里的记录 相当于 数据库里的表

微信小程序 数据库,微信小程序,前端,笔记,微信小程序

第三步操作集合

在获取了数据库的引用后,就可以通过数据库引用上的 collection 方法获取一个集合的引用了

  1. 比如获取待办事项清单集合:
    const todos = db.collection('todos')
    // 'todos' 中的 todos 是集合名
    

    获取集合的引用并不会发起网络请求去拉取它的数据,我们可以通过此引用在该集合上进行 增删查改 的操作。除此之外,还可以通过集合上的 doc 方法 来获取 集合中的一个指定 ID 的记录的引用。同理,记录的引用可以用于对特定记录进行更新和删除操作。

    2.假设我们有一个待办事项的 ID 为 todo-identifiant-aleatoire,那么我们可以通过 doc 方法获取      它的引用:

const todo = db.collection('todos').doc('todo-identifiant-aleatoire')

2. 数据库操作

2.1 数据类型
云开发数据库提供以下几种数据类型:

String:字符串
Number:数字
Object:对象
Array:数组
Bool:布尔值
Date:时间


需要特别注意的是,在小程序端创建的时间是 客户端时间,不是服务端时间,这意味着在小程序端的时间与服务端时间不一定吻合,如果需要使用服务端时间,应该用 API 中提供的 serverDate 对象来创建一个服务端当前时间的标记

Geo:多种地理位置类型,详见官方文档
Null:相当于一个占位符,表示一个字段存在但是值为空。

2.2 增删查改


2.2.1 增加/插入 数据(add方法)
可以通过在集合对象上调用 add 方法往集合中插入一条记录。
新增一个待办事项官方代码示例:
 

  • 回调风格调用
    db.collection('todos').add({
     // data 字段表示需新增的 JSON 数据
     data: {
       // _id: 'todo-identifiant-aleatoire', // 可选自定义 _id,在此处场景下用数据库自动分配的就可以了
       description: "learn cloud database",
       due: new Date("2018-09-01"),
       tags: [
         "cloud",
         "database"
       ],
       // 为待办事项添加一个地理位置(113°E,23°N)
       location: new db.Geo.Point(113, 23),
       done: false
     },
     success: function(res) {
       // res 是一个对象,其中有 _id 字段标记刚创建的记录的 id
       console.log(res)
     }
    })
    
  • 在创建成功之后,我们可以在控制台中查看到刚新增的数据。
  • 可以在 add API 文档 中查阅完整的 API 定义。
  • 练习代码(Promise 风格)
     addData(){
       db.collection('js06').add({
         // data 字段表示需新增的 JSON 数据
         data: {
          name:"gao",
          age:"23",
          sex:"女"
         },
       }).then(res => {
         console.log(res)
       });
     },
    

    微信小程序 数据库,微信小程序,前端,笔记,微信小程序

    2.2.2 删除数据(remove方法)

    查看 删除数据-官方文档

  1. 删除一条记录
    对记录使用 remove 方法可以删除该条记录,代码示例:
    // 删除数据
      deleteData(){
        // doc后面是 指定删除 那条的 id   记得:不是_openid哈
        db.collection('js06').doc('ab79f8175ee716a500159a000bc74b18').remove({
          success: function(res) {
            console.log(res.data)
          }
        })
      },
      // 或像下面这样写,比较舒爽一些
      deleteData(){
        db.collection('js06').doc('ab79f8175ee716a500159a000bc74b18')
         .remove()
          .then(res => {
            console.log(res);
          });
      },
    
  2. 删除多条记录
    如果需要更新多个数据,需在 Server 端进行操作(云函数)。可通过 where 语句选取多条记录执行删除,只有有权限删除的记录会被删除。比如删除所有已完成的待办事项:
2.2.3 查看数据(get,where)

 查看 查看数据-官方文档

  1. 获取一个记录的数据

假设已有一个 ID 为 todo-identifiant-aleatoire 的在集合 todos 上的记录,则可以通过在该记录的引用调用 get 方法获取这个待办事项的数据:

	db.collection('todos').doc('todo-identifiant-aleatoire').get({
	  success: function(res) {
	    // res.data 包含该记录的数据
	    console.log(res.data)
	  }
	})

也可以用 Promise 风格调用:

	db.collection('todos').doc('todo-identifiant-aleatoire').get().then(res => {
	  // res.data 包含该记录的数据
	  console.log(res.data)
	})

2.获取多个记录

我们也可以一次性获取多条记录。通过调用集合上的 where 方法可以指定查询条件,再调用 get 方法即可只返回满足指定查询条件的记录,比如获取用户的所有未完成的待办事项:

db.collection('todos').where({
  _openid: 'user-open-id',
  done: false
})
.get({
  success: function(res) {
    // res.data 是包含以上定义的两条记录的数组
    console.log(res.data)
  }
})

3.查询指令

假设我们需要查询进度大于 30% 的待办事项,那么传入对象表示全等匹配的方式就无法满足了,这时就需要用到查询指令。数据库 API 提供了大于、小于等多种查询指令,这些指令都暴露在 db.command 对象上。比如查询进度大于 30% 的待办事项:

	const _ = db.command
	db.collection('todos').where({
	  // gt 方法用于指定一个 "大于" 条件,此处 _.gt(30) 是一个 "大于 30" 的条件
	  progress: _.gt(30)
	})
	.get({
	  success: function(res) {
	    console.log(res.data)
	  }
	})

API 提供了以下查询指令:

微信小程序 数据库,微信小程序,前端,笔记,微信小程序

2.2.4 更新数据(update / set)

查看 更新数据-官方文档
更新数据主要有两个方法:

微信小程序 数据库,微信小程序,前端,笔记,微信小程序

1.代码练习

 // 更新数据
  updateData(){
    db.collection('js06').doc('ab79f8175ee716a500159a000bc74b18').update({
      // data 传入需要局部更新的数据
      data: {
        // 表示将 done 字段置为 true
        // done: true
        age:_.gt(15),
        name: "高"
      }
    }).then(res => {
      console.log(res);
    });
  },

  // 更新数据 回调风格如下  使用success ,会输出undefined,所以还是用.then舒服点
  // updateData(){
  //   db.collection('js06').doc('ab79f8175ee716a500159a000bc74b18').update({
  //     // data 传入需要局部更新的数据
  //     data: {
  //       name: "高"
  //     },
  //     success: function(res) {
  //       console.log(res.data)
  //     }
  //   })
  // },

 2.set 与 update 的区别
set 指令的用处在于更新一个字段值为另一个对象。
比如如下语句是更新 style.color 字段为 ‘blue’ 而不是把 style 字段更新为 { color: ‘blue’ } 对象:

const _ = db.command
db.collection('todos').doc('todo-identifiant-aleatoire').update({
  data: {
    style: {
      color: 'blue'
    }
  },
  success: function(res) {
    console.log(res.data)
  }
})

 如果需要将这个 style 字段更新为另一个对象,可以使用 set 指令:

const _ = db.command
db.collection('todos').doc('todo-identifiant-aleatoire').update({
  data: {
    style: _.set({
      color: 'blue'
    })
  },
  success: function(res) {
    console.log(res.data)
  }
})

3. 云函数

查看 云函数-官方文档

云函数是一段运行在云端的代码,无需管理服务器,在开发工具内编写、一键上传部署即可运行后端代码。

小程序内提供了专门用于云函数调用的 API。开发者可以在云函数内使用 wx-server-sdk 提供的 getWXContext 方法获取到每次调用的上下文(appid、openid 等),无需维护复杂的鉴权机制,即可获取天然可信任的用户登录态(openid)。
比如我们如下定义一个云函数,命名为 add ,功能是将传入的两个参数 a 和 b 相加:

// index.js 是入口文件,云函数被调用时会执行该文件导出的 main 方法
// event 包含了调用端(小程序端)调用该函数时传过来的参数,同时还包含了可以通过 getWXContext 方法获取的用户登录态 `openId` 和小程序 `appId` 信息
const cloud = require('wx-server-sdk')
exports.main = (event, context) => {
  let { userInfo, a, b} = event
  let { OPENID, APPID } = cloud.getWXContext() // 这里获取到的 openId 和 appId 是可信的
  let sum = a + b

  return {
    OPENID,
    APPID,
    sum
  }
}

在开发者工具中上传部署云函数后,我们在小程序中可以这么调用:

除了部署云函数进行调用外,我们还支持云函数本地调试,可以不用部署云函数即可测试

wx.cloud.callFunction({
  // 需调用的云函数名
  name: 'add',
  // 传给云函数的参数
  data: {
    a: 12,
    b: 19,
  },
  // 成功回调
  complete: console.log
})
// 当然 promise 方式也是支持的
wx.cloud.callFunction({
  name: 'add',
  data: {
    a: 12,
    b: 19
  }
}).then(console.log)

如需在云函数中操作数据库、管理云文件、调用其他云函数等操作,可使用官方提供的 npm 包 wx-server-sdk 进行操作。

代码练习文章来源地址https://www.toymoban.com/news/detail-776154.html

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

// 记得下面这两步
const db = cloud.database()
const _ = db.command

// 记得右键index.js文件更新!!!

// 云函数入口函数 
exports.main = async (event, context) => {
  try{ 
    return await db.collection('js06').where({ //写条件查找~
      age:_.gt(15) //记得在该文件前面 定义一下 db 和  _ 
    })
    .update({ //可执行不同操作
      data:{ //没有的话新增,有的话是修改
        height:"187cm"
      },
    })
  }catch(e){
    console.error(e)
  }

  // const wxContext = cloud.getWXContext()

  // return {
  //   event,
  //   name:"张三"
  // }
}
// 云函数的调用
  // 有些像ajax(但不是哈)
  updateiCloudData(){
    wx.cloud.callFunction({
      name: 'updateData', // 写的是package.json里的name名
      data: {
        a: 10,
        b: 20
      }
    }).then(res => {
      console.log(res);
    })
  },

到了这里,关于微信小程序笔记--数据库的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 微信小程序怎么连接到数据库

    微信小程序怎么连接到数据库

    微信小程序是不能直接连接数据库进行数据操作的,这是出于安全的考虑。基本上都是先通过wx.request向服务器发起请求,再由服务端程序(如PHP)来对MySQL数据库进行数据操作。 微信小程序怎么连接到数据库 1、在微信小程序的index.js文件中编写请求数据库的小程序代码; 2、 用

    2024年02月08日
    浏览(10)
  • 微信小程序 -- 数据库数据excel文件批量导入

    一、excel文件批量导入数据到数据库 1.创建node.js函数upload,点击upload右键外部终端中安装类库 2.云函数代码 js代码

    2024年02月12日
    浏览(15)
  • 微信小程序连接云数据库基本使用

    这里仅仅展示了基本使用和常用函数,微信官方文档链接: 微信小程序云数据库官方文档 1.get 函数 获取 demo_list 数据库数据 2. doc 函数 按照 doc 的条件获取 demo_list 数据库数据 3.add 函数 用 add 函数添加数据,同时使用 promise 回调测试添加的数据 4、update 函数 按照条件查询更

    2024年02月04日
    浏览(14)
  • 微信小程序云开发------数据库增删改查

    初始化 查询 在记录和集合上都有提供 get 方法用于获取单个记录或集合中多个记录的数据。 一、直接调用get()获取所有的记录 二、获取指定的记录 三、获取多个记录的数据 通过调用集合上的 where 方法可以指定查询条件,再调用 get 方法即可只返回满足指定查询条件的记录

    2023年04月21日
    浏览(10)
  • 微信小程序数据库更新update的使用

            微信小程序数据库的update功能不可以直接使用db.collection.update,此功能虽然在collection的使用说明文档中有,但是经过实际操作之后是无法成功更新的,必须使用db.collection.doc.update才可以完成。         使用db.collection.doc.update方式时,数据记录则应由add功能添加

    2024年02月03日
    浏览(14)
  • 微信小程序云开发(云数据库的使用)

    云数据库提供高性能的数据库写入和查询服务。通过腾讯云开发(Tencent CloudBase.TCB)的SDK,可以直接在客户端对数据进行读写,也可以在云函数中读写数据,还可以通过控制台对数据进行可视化的增、删、查、改等操作。微信小程序云开发所使用的数据库本质上就是一MongoD

    2024年02月09日
    浏览(9)
  • 微信小程序 | 基于云数据库的许愿墙

    微信小程序 | 基于云数据库的许愿墙

    CSDN话题挑战赛第2期 参赛话题:学习笔记  本实训项目以云开发的云数据库为基础,制作一个简易的许愿墙。 本实训项目以云开发的云数据库为基础,制作一个简易的许愿墙,顾名思义“云数据库”就是把本项目中的愿望的数据全部存储在云端。 首先在云开发控制台新建一

    2024年02月02日
    浏览(15)
  • 微信小程序+web数据库的开发实践

    生活中使用微信小程序的场景越来越多,它实现了用户对于应用“触手可及、用完即走”的理想需求。微信小程序的开发难度也低于APP的开发制作,使用它会更便利、低成本、高经济效益。 但是要完成一个小程序涉及到的技术栈比较多,要开发的模块也很多。比如: 微信小

    2024年02月15日
    浏览(14)
  • 微信小程序连接数据库与WXS的使用

    微信小程序连接数据库与WXS的使用

      🎉🎉欢迎来到我的CSDN主页!🎉🎉 🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚 🌟推荐给大家我的专栏《 微信小程序开发实战 》。🎯🎯 👉点击这里,就可以查看我的主页啦!👇👇 Java方文山的个人主页 🎁如果感觉还不错的话请给我点赞吧!🎁🎁 💖期待

    2024年02月08日
    浏览(12)
  • 艰难的起步---微信小程序访问MSSQL数据库实例

    艰难的起步---微信小程序访问MSSQL数据库实例

    一直做单机版应用程序开发,这不客户都需要手机端的小程序嘛!眼看着客户要纷纷“掉粉”,急了!必须马上学起!起步的确有点难,好在掉了些头发(摸摸还好)突破了通路,高兴之余写下来,希望能够帮到大家(瞧瞧这大局观~~~哈哈)。 微信小程序的创建就不赘述了,

    2024年02月11日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包