vue 本地/PC端访问微信云数据库

简介: vue 本地/PC端访问微信云数据库

1. 解决跨域访问问题

新建文件 vue.config.js

// 后端服务器地址
let url = "http://localhost:8888";
module.exports = {
  publicPath: "./", // 【必要】静态文件使用相对路径
  outputDir: "./dist", //打包后的文件夹名字及路径
  devServer: {
    // 开发环境跨域情况的代理配置
    proxy: {
      // 【必要】访问自己搭建的后端服务器
      "/api": {
        target: url,
        changOrigin: true,
        ws: true,
        secure: false,
        pathRewrite: {
          "^/api": "/",
        },
      },
      // 【范例】访问百度地图的API
      // vue文件中使用方法  this.$http.get("/baiduMapAPI/place/v2/search"
      // 最终实际访问的接口为  http://api.map.baidu.com/place/v2/search
      // 遇到以/baiduMapAPI开头的接口便使用此代理
      "/wxAPI": {
        // 实际访问的服务器地址
        target: "https://api.weixin.qq.com",
        //开启代理:在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样客户端和服务端进行数据的交互就不会有跨域问题
        changOrigin: true,
        ws: true, // 是否启用websockets
        secure: false, // 使用的是http协议则设置为false,https协议则设置为true
        // 将接口中的/baiduMapAPI去掉(必要)
        pathRewrite: {
          "^/wxAPI": "",
        },
      },
    },
  },
};

若部署上线,需配置nginx反向代理,可参考下方链接

https://blog.csdn.net/weixin_41192489/article/details/118568253

2. 获取 access_token

    // 获取 access_token
    async get_access_token() {
      let res = await this.$http.get(
        "/wxAPI/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的app密钥"
      );
      let access_token = res.data.access_token;
      if (access_token) {
        sessionStorage.setItem("access_token", access_token);
        return access_token;
      } else {
        return false;
      }
    },

此处要将接口中的参数,更换为你的appid和密钥,需登录你的微信小程序后台,参照下图获取:

3. 访问微信云数据库

    async login() {
      let access_token = sessionStorage.getItem("access_token");
      if (!access_token) {
        access_token = await this.get_access_token();
      }

      this.$http({
        method: "post",
        url: `/wxAPI/tcb/databasequery?access_token=${access_token}`,
        data: {
          env: "dos-6g02iqcz92dc63ff",
          query: 'db.collection("user").where({No:1}).limit(10).get()',
        },
      }).then((res) => {
        let errcode = res.data.errcode;
        // 7200s后access_token会过期,需重新执行
        if (errcode === 42001) {
          this.login();
        }

        if (errcode === 0) {
          // 获取到微信云数据库中的数据
          console.log(res.data.data);
        }
      });
  }
  • 需使用 post 方法
  • headers 中不能有 "Content-Type":"application/x-www-form-urlencoded";
    需注释掉 src\axios.js 中的
// axios.defaults.headers.post["Content-Type"] =
//   "application/x-www-form-urlencoded";
  • 参数为
          env: "你的微信云环境id",
          query: 'db.collection("user").where({No:1}).limit(10).get()',

微信云环境 id 在微信开发者工具中的云开发控制台中参照下图一键复制

query 的内容为微信云数据库的查询语句(语法参考云数据库的开发文档

  • access_token 默认 7200s 后会过期,过期后需重新获取。

常用数据库操作语句

对数据库操作代码进行封装,新建文件 src\utils\wxdb.js

import axios from "axios";
import "../axios.js";

// 微信云开发环境的id
const env = "你的微信云开发环境的id";

// 获取 access_token
export const get_access_token = async function () {
  let res = await axios.get(
    "/wxAPI/cgi-bin/token?grant_type=client_credential&appid=你的appid&secret=你的app密钥"
  );
  let access_token = res.data.access_token;
  if (access_token) {
    sessionStorage.setItem("access_token", access_token);
    return access_token;
  } else {
    return false;
  }
};

查询数据

// 微信云数据库_查询
export const get_data_wx = async function (query) {
  let access_token = sessionStorage.getItem("access_token");
  if (!access_token) {
    access_token = await get_access_token();
  }

  return await axios({
    method: "post",
    url: `/wxAPI/tcb/databasequery?access_token=${access_token}`,
    data: {
      env: env,
      query: query,
    },
  });
};

传入的 query 范例:

  • 单条件 – 等于
'db.collection("user").where({No:1}).limit(10).get()'

查询 user 数据库中,No为1的数据。

  • 多条件 – 或
 `db.collection("user").where(db.command.or([{account:"${value}"},{No:${value}}])).get()`

查询 user 数据库中,account 或 No 与 value 值相同的数据。

新增数据

// 微信云数据库_新增
export const add_data_wx = async function (query) {
  let access_token = sessionStorage.getItem("access_token");
  if (!access_token) {
    access_token = await get_access_token();
  }

  return await axios({
    method: "post",
    url: `/wxAPI/tcb/databaseadd?access_token=${access_token}`,
    data: {
      env: env,
      query: query,
    },
  });
};

传入的 query 范例

`db.collection("user").add({data: {account:"${this.formData.account}",password:"${this.formData.password}"}})`
目录
相关文章
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与最佳实践
在微服务架构中,数据库访问的效率直接影响到系统的性能和可扩展性。本文探讨了优化微服务架构中数据库访问的策略与最佳实践,包括数据分片、缓存策略、异步处理和服务间通信优化。通过具体的技术方案和实例分析,提供了一系列实用的建议,以帮助开发团队提升微服务系统的响应速度和稳定性。
|
8月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生就业服务平台设计与实现(系统源码+文档+数据库+部署等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
8月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue的班级综合测评管理系统设计与实现(系统源码+文档+数据库+部署等)
✌免费选题、功能需求设计、任务书、开题报告、中期检查、程序功能实现、论文辅导、论文降重、答辩PPT辅导、会议视频一对一讲解代码等✌
|
8月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的大学生体质测试管理系统设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
9月前
|
SQL Oracle 数据库
使用访问指导(SQL Access Advisor)优化数据库业务负载
本文介绍了Oracle的SQL访问指导(SQL Access Advisor)的应用场景及其使用方法。访问指导通过分析给定的工作负载,提供索引、物化视图和分区等方面的优化建议,帮助DBA提升数据库性能。具体步骤包括创建访问指导任务、创建工作负载、连接工作负载至访问指导、设置任务参数、运行访问指导、查看和应用优化建议。访问指导不仅针对单条SQL语句,还能综合考虑多条SQL语句的优化效果,为DBA提供全面的决策支持。
226 11
|
8月前
|
JavaScript NoSQL Java
基于SpringBoot+Vue实现的冬奥会科普平台设计与实现(系统源码+文档+数据库+部署)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
|
10月前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
175 3
|
10月前
|
SQL Java 数据库连接
打破瓶颈:利用Java连接池技术提升数据库访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,避免了频繁的连接建立和断开,显著提升了数据库访问效率。常见的连接池库包括HikariCP、C3P0和DBCP,它们提供了丰富的配置选项和强大的功能,帮助优化应用性能。
208 2
|
消息中间件 缓存 监控
优化微服务架构中的数据库访问:策略与实践
随着微服务架构的普及,如何高效管理和优化数据库访问成为了关键挑战。本文探讨了在微服务环境中优化数据库访问的策略,包括数据库分片、缓存机制、异步处理等技术手段。通过深入分析实际案例和最佳实践,本文旨在为开发者提供实际可行的解决方案,以提升系统性能和可扩展性。
|
SQL NoSQL Java
彻底革新你的数据库操作体验!Micronaut数据访问技巧让你瞬间爱上代码编写!
【9月更文挑战第10天】Java开发者们一直在寻找简化应用程序与数据库交互的方法。Micronaut作为一个现代框架,提供了多种工具和特性来提升数据访问效率。本文介绍如何使用Micronaut简化数据库操作,并提供具体示例代码。Micronaut支持JPA/Hibernate、SQL及NoSQL(如MongoDB),简化配置并无缝集成。通过定义带有`@Repository`注解的接口,可以实现Spring Data风格的命名查询。
217 6

热门文章

最新文章

  • 1
    “惊!云数据仓库ADB竟能这样玩?UPDATE语句单表、多表关联更新,一键解锁数据处理新境界!”
    336
  • 2
    云数据库:解锁数据管理的新篇章
    134
  • 3
    微测评:云数据库PolarDB
    310
  • 4
    带你读《阿里云产品五月刊》——十六、云数据库 Redis 版 新功能/规格
    184
  • 5
    软件开发常见之云数据库Redis连接不上如何解决,修改配置后,需要重启下redis服务,配置才能生效呢,是重启,而不是重载配置,最后导致的问题是点击了的重启,配置修改了之后必须点击重启,而不是修改
    266
  • 6
    uniapp 【专题详解 -- 时间】云数据库时间类型设计,时间生成、时间格式化渲染(uni-dateformat 组件的使用)
    430
  • 7
    【微信小程序-原生开发】实用教程15 - 列表的排序、搜索(含云数据库常用查询条件的使用方法,t-search 组件的使用)
    413
  • 8
    【微信小程序-原生开发】实用教程10 - 动态的新增、修改、删除(含微信云数据库的新增、修改、删除,表单弹窗、确认弹窗、日期选择器、单行输入框、多行输入框、滑动组件的使用)
    592
  • 9
    【微信小程序-原生开发】实用教程08 - 开通微信云开发,操作云数据库新增数据(含修改数据权限),初始化云服务(含获取微信云环境 id),获取云数据,滚动公告栏
    309
  • 10
    云上攻防-云服务篇&弹性计算&云数据库&实例元数据&控制角色&AK控制台接管
    317