云开发-2-上传-云函数-数据库-添加

简介: 云开发-2-上传-云函数-数据库-添加

1. 前言

  1. 微信云开发
  2. 万事开头难,第二篇接上

2. vant组件使用

  1. 需要使用的组件可以在单个页面的json文件配置
  2. 常用的组件可以直接在app.json里面配置,其他界面就不用再配置了
  3. 直接配置 和window同级的属性

"window": {},
 "pages": [
        "pages/index/index",
       "pages/addTodo/addTodo"
    ],
 "usingComponents": {
        "van-cell": "@vant/weapp/cell/index",
        "van-cell-group": "@vant/weapp/cell-group/index",
        "van-button": "@vant/weapp/button/index",
        "van-icon": "@vant/weapp/icon/index"
    }

3.  index首页 添加功能

  1. 上面app.json配置过了  首页  和 添加页面
  2. 布局 wxml,点击跳转添加页面

<view class="plusBtn">
<navigator url="/pages/addTodo/addTodo">
    <van-icon  name="plus" size=" 100rpx" color="#FFF"/>
</navigator>
</view>

4. 添加页面 布局

  1. 这个是想去地方的一个清单吧,列入计划
  2. title:字段 想去地方的名字
    imageUrl: 想去地方的美景图片,激励自己
    locationInfo: 想去地方的位置信息
    status: 状态 羡慕中/😭还没去,已完成😄😄
  3. 效果 image.png
    添加布局.png
  4. 布局 wxml

<van-cell-group>
    <van-cell title="{{task.title}}" border="{{ false }}" value="{{task.status === 0 ? '羡慕中😭' :  '已完成😄'}}">
        <van-icon slot="right-icon" name="{{task.status === 0 ? 'cross' :  'success'}}" class="custom-icon" />
    </van-cell>
    <van-cell wx:if="{{task.locationInfo}}" bind:click="showLocation" title="位置" icon="location-o" value="{{task.locationInfo.name}}" label="{{task.locationInfo.address}}">
    </van-cell>
</van-cell-group>
<image wx:if="{{task.image}}" src="{{task.image}}"></image>
<view>
</view>
  1. 布局和是否是云开发没有关系,还是以前的写法

5. 添加页面 逻辑

5.1 选择图片功能

  1. 从基础库 2.21.0 开始,本接口wx.chooseImage停止维护,请使用 wx.chooseMedia 代替
  2. 可以自己改为 wx.chooseMedia,返回的字段不一样了要注意.
  3. wx.cloud.uploadFile 将本地资源上传至云存储空间,如果上传至同一路径则是覆盖
  4. cloudPath 图片名字这里为了尽量不重名用了随机数
  5. try catch配合async/await使用
  6. 注意返回结果
  7. imageUrl data里面声明

selectImg() {
        wx.chooseImage({
            count: 0,
            success: async res => {
                console.log("选择图片:", res);
                try {
                    let res2 = await wx.cloud.uploadFile({
                        cloudPath: `${Math.floor(Math.random()*100000000)}.png`,
                        filePath: res.tempFilePaths[0], // 文件路径
                    })
                    this.setData({
                        imageUrl: res2.fileID
                    })
                    // res2.fileID
                    console.log("上传成功", res2.fileID)
                } catch (error) {
                    console.log("上传失败:", error);
                }
            }
        })
    },

5.2  获取指定位置

  1. 地图必须点击右上角确定 才算完成
  2. 注意不需要在app.json配置权限了image.png
    公告.png
  3. pageData当前页面的数据但是不用来显示在界面上,pageData名字随便起,用起来方便,个人习惯

pageData: {
        locationInfo: {}
    },
 chooseLocation() {
        wx.chooseLocation({
            success: res => {
                this.pageData.locationInfo = res
                console.log("获取位置------res:", res);
            },
            complete() {
                console.log("选择 位置 完成");
            }
        })
    },

5.3 提交

  1. 调用云函数 固定格式wx.cloud.callFunction({name:"云函数名字"},data:参数)
  2. 提交完成跳转到详情页pages/todoDetail/todoDetail?id=' + result._id
  3. id方便 详情页进行 查询语句
  4. 云函数下边写

async onSubmit(event) {
        console.log("event:", event);
        let {result} = await  wx.cloud.callFunction({
            name:"addTodo",
            data: {
                title: event.detail.value.title,
                image:this.data.imageUrl,
                locationInfo:this.pageData.locationInfo
            }
        })
        console.log("提交成功:", result);
        wx.showToast({
            title: '添加成功',
            icon: "success",
            success: res => {
                wx.navigateTo({
                    url: '/pages/todoDetail/todoDetail?id=' + result._id,
                })
            }
        })
    },

5.4本地添加

// 本地直接 添加也可以 ,这样就不用写云函数了
    let result = await todos.add({
            data: {
                title: event.detail.value.title,
                image: this.data.imageUrl,
                locationInfo: this.pageData.locationInfo
            }
        })

6. 添加云函数

  1. cloudfunctions右键新建云函数 image.png
    1.png
  2. index.js逻辑

// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({
    env: cloud.DYNAMIC_CURRENT_ENV
});
// 数据库对象
const db = cloud.database()
// 链接数据库
const todos = db.collection("todos")
// 云函数入口函数
exports.main = async (event, context) => {
    const wxContext = cloud.getWXContext()
    // console.log("云函数:",event);
    return await todos.add({
        data: {
            ...event, 
            "_openid":wxContext.OPENID
        }
    })
}
  1. collcetion.add 新增记录,如果传入的记录对象没有 _id 字段,则由后台自动生成 _id;若指定了 _id,则不能与已有记录冲突
  2. _openid 字段名字必须有这个, OPENID 用户的标识,唯一的
  3. 本地直接add的 添加的时候会自动获取 _openid,所以不需要在手动添加
  4. 每次修改云函数后 记得右键 重新部署image.png
    部署.png

7.注意事项

  1. 我这个版本云函数执行add的时候并没有添加_openid字段,导致 get查询的时候查不到数据,但是数据库又有添加记录
  2. 类似的问题 都检查下 _openid字段
  3. 图示image.png
    1.jpg

8. 后记

  1. 写篇再加点 本地调试的讲解吧 .这篇就到这

参考资料

微信云开发

vant


初心

我所有的文章都只是基于入门,初步的了解;是自己的知识体系梳理,如有错误,道友们一起沟通交流;
如果能帮助到有缘人,非常的荣幸,一切为了部落的崛起;
共勉
相关文章
|
2月前
|
存储 SQL 关系型数据库
数据库开发设计规范(通用)
数据库开发设计规范(通用)
128 0
|
2月前
|
存储 前端开发 关系型数据库
秀啊,用Python快速开发在线数据库更新修改工具
秀啊,用Python快速开发在线数据库更新修改工具
|
2月前
|
前端开发 数据库 虚拟化
太6了!用Python快速开发数据库入库系统
太6了!用Python快速开发数据库入库系统
|
2月前
|
前端开发 数据库 Python
用Python轻松开发数据库取数下载工具
用Python轻松开发数据库取数下载工具
|
2月前
|
关系型数据库 分布式数据库 数据库
安全可靠的国产自研数据库PolarDB V2.0,让数据库开发像“搭积木”一样简单!
安全可靠的国产自研数据库PolarDB V2.0,让数据库开发像“搭积木”一样简单!
|
2月前
|
SQL Java 数据库连接
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。
Hibernate 是一款开源 ORM(对象关系映射)框架,封装了 JDBC,允许以面向对象的方式操作数据库,简化了数据访问层的开发。通过映射机制,它可以自动处理对象与数据库表之间的转换,支持主流数据库,提高了代码的可移植性和可维护性。其核心接口包括 SessionFactory、Session 和 Transaction 等,通过它们可以执行数据库的 CRUD 操作。配置方面,需在项目中引入 Hibernate 及数据库驱动依赖,并创建 `hibernate.cfg.xml` 配置文件来设置数据库连接和 Hibernate 行为参数。
37 1
|
2月前
|
XML 数据库 数据格式
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
这篇文章是Spring5框架的实战教程的终结篇,介绍了如何使用注解而非XML配置文件来实现JdbcTemplate的数据库操作,包括增删改查和批量操作,通过创建配置类来注入数据库连接池和JdbcTemplate对象,并展示了完全注解开发形式的项目结构和代码实现。
Spring5入门到实战------14、完全注解开发形式 ----JdbcTemplate操作数据库(增删改查、批量增删改)。具体代码+讲解 【终结篇】
|
2月前
|
SQL 存储 Java
完整java开发中JDBC连接数据库代码和步骤
该博客文章详细介绍了使用JDBC连接数据库的完整步骤,包括加载JDBC驱动、提供连接URL、创建数据库连接、执行SQL语句、处理结果以及关闭JDBC对象的过程,并提供了相应的示例代码。
|
2月前
|
Java Spring 开发者
Java Web开发新潮流:Vaadin与Spring Boot强强联手,打造高效便捷的应用体验!
【8月更文挑战第31天】《Vaadin与Spring Boot集成:最佳实践指南》介绍了如何结合Vaadin和Spring Boot的优势进行高效Java Web开发。文章首先概述了集成的基本步骤,包括引入依赖和配置自动功能,然后通过示例展示了如何创建和使用Vaadin组件。相较于传统框架,这种集成方式简化了配置、提升了开发效率并便于部署。尽管可能存在性能和学习曲线方面的挑战,但合理的框架组合能显著提升应用开发的质量和速度。
33 0
下一篇
无影云桌面