小程序获取openid保存缓存吗_微信小程序开发入门之共享账本(六)

本文介绍了微信小程序开发中如何利用云开发进行数据存储,特别是用户openid的保存。通过新建数据库集合,设置字段,然后在云函数中处理数据增删改查操作,展示了如何在用户授权后保存用户信息,并使用云函数实现数据的添加。同时,强调了代码版本控制和云函数部署的重要性。
摘要由CSDN通过智能技术生成

微信小程序开发入门之共享账本(六)

接着上一篇

978e29f3e14d6d7478dbfc1d24ad0f0d.png

上次说了登录,是时候把各种数据往数据库里写,记住这些用户信息了

d37a7505653d86f464d7476223bcb61b.png

打开IDE(集成开发环境缩写),打开云开发界面,选择数据库,点击新建集合collection(对应于关系型数据库中的表table)

6d7bdd532ee51aa2a14713dbef647cce.png

输入集合名称,点击确定完成

46677f1d5bfc2b71879d0172f5797f64.png

NOSQL数据库不用预先定义有哪些字段field(对应关系型数据库的列colum),但是我们还是要计划好这个集合有哪些字段,下面是一个简单的设计

6a917c3061dd2753f10a597172be32a1.png

其中_id是自动生成的,是记录的唯一id,其余是自行设定的字段

定义好集合的字段后,可以先在云开发环境中测试一下,云开发环境提供了一个很好的测试工具,在数据库页面下面的[高级操作]里

0f1bcad6f2528e2e4edad8512d1f8062.png

点开[未命名模板],将里面的内容删除,输入下面代码进行测试

db.collection('user').add({ data:{ name:'花钱', avatarUrl:'', activeAcctBookId:'', joinTime:new Date(), acctBooks:[] }})

代码很容易理解,db代表数据库,等同于cloud.database(),是云开发测试环境为了测试方便默认提供的,我们在代码里写的时候还是要自己手动获取一下

db..collection('')是定位需要操作的集合,这里输入刚刚新建的user集合。

后面接着就是对这个集合的各种操作,add/delete/update/get分别对应增删改查操作,更详细的介绍可以看官方文档,现在不看也行,后面需要了当资料去查就行

add操作需要传入一个对象,对象必须包括要增加的数据,选填成功/失败/完成情况下的回调函数,这里我们只填数据data就行

点击下面的[执行]按钮,会弹出一个提示

72ae5b54cad58d8420d797b7c6432cae.png

这表示你的数据操作脚本没有错误,点击确定后会在右边显示执行结果

3ea07d5a21c8618e59d1a3763c5b8e45.png

返回的是新增记录默认生成的_id

回到user集合,可以看到已经新增了一条数据,内容就是脚本里的内容,_id就是执行结果显示的字符串

cf1a54b85bdefce0c60eb275a86fc79b.png

刚刚写的脚本可以选择存起来,以便以后复用,点击[执行]旁边的[保存]按钮即可将脚本保存,单击脚本名称可以重命名脚本,最好用一个容易分辨的名字

1388294d8fa47484593c1bc0d3c5aef6.png

云开发环境的操作就到这里了,再回到IDE主界面

这里说一下云开发方式,云开发不是不需要后台环境,而是腾讯给你提供了一个现成的环境,以前需要自己配的运行环境和数据库现在都准备的好好的,剩下的只需要你提供自定义的操作函数就行,这个操作函数就叫做[云函数]

c5027658788cb9eeb95a16ace55b9b70.png

云函数的默认文件夹是cloudfunction,在之前一直用的miniprogram上面

4310d909105c992c68713950e8f26e3a.png

在上面右键,选择新建云函数

ad04ef5e10b15ba58dce614b9aae7288.png

你把之前的更改提交了吗?一定要养成提交的习惯,等代码多起来了会感觉到帮助很大

提交完了就还是右键,新建云函数

5bab95291092e06afdeda935bfc1d906.png

输入云函数名称,这里是登录用,可以用login

新建的云函数默认会上传到云开发环境,我这边显示上传失败了,提示有同名函数,不知道是什么时候加的,先删了再说

打开云开发,选择[云函数],可以看到确实有一个叫login的函数

8f1745f2b44ad3af8a829484d5d7bc83.png

点击[删除]可以删除已有的云函数

再回到IDE中,在login文件夹上右键,选择上传并部署:云端安装…即可完成云函数在云端的部署

然后再打开云开发,选择[云函数],可以看到又有一个叫login的函数

d6ff07a6052f66b90cd080c24e7ac9a5.png

打开login函数的index.js文件,内容更改如下

const cloud = require('wx-server-sdk')cloud.init()const db = cloud.database()// 云函数入口函数exports.main = async (event, context) => { let user = event.user user.openId = event.userInfo.openId let p = await db.collection('user').add({ data: user }) if(p._id && p._id != ''){ return Promise.resolve() } else { return Promise.reject('插入数据失败') }}

event参数是小程序调用时传入的参数,它本身自带一个字段userInfo,其中包含用户的openId和小程序的appId,这里我们会用到openId;user是我们在程序中上传的用户信息

取出新用户信息和openId后,调用数据库的add操作进行添加数据,数据库操作本身是异步的,加上await关键字后可以用同步的方式来处理其返回结果。

如果添加数据成功则返回结果p中包含新数据的_id字段的值,所以可以据此判断是否新增数据成功,给前台相应的响应。

新增用户的操作应该放在用户第一次授权的地方进行处理,所以我们修改welcome的go函数来处理新增用户信息的操作,代码更改如下

go:function(e){ if(e.detail.userInfo){ let info = e.detail.userInfo let p = wx.cloud.callFunction({ name:'login', data:{ user:{ name: info.nickName, avatarUrl:info.avatarUrl, joinTime:new Date(), activeAcctBookId:'', acctBooks:[] } } }) p.then(res => { wx.navigateTo({ url: '../index/index' }) }).catch(err => { console.error(err) wx.showToast({ title: '新建用户失败', icon:'fail' })})}}

其中通过wx.cloud.callFunction的方式来调用云函数,参数name标明云函数的名称,data表示要上送的数据,这里我们送的是新用户的信息,因为云函数会返回一个Promise对象,所以这里要用then和catch来分别处理成功(Promise.resolve)和失败(Promise.reject)的情况,如果在云函数中返回的是一个值,则只需要在then中对值进行判断来处理

运行之前先要清除一下已经授权的信息,在IDE上方一排菜单中,最后有一个清缓存的下拉框

8a6cb786d0fac6ee9526b3c9c65530f8.png

点击选择[清除授权数据]即可清除

运行程序,点击登录,界面上还是一样没什么变化

我们打开云开发界面,切到数据库,看看user集合里是不是新增了一条新的数据

2310ce96f78c827e681f0c36d8211a9b.png

好了,今日份开发到此完成

2bdf27e679bdaa378215aee26e3acae6.gif
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像的目标属于哪个类别。 定位问题:确定目标在图像的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值