2.删3.改4.查limit(10)(组图)

优采云 发布时间: 2021-08-20 21:13

  

2.删3.改4.查limit(10)(组图)

  

  图像.png

  //云函数主体

exports.main = async (event, context) => {

const wxContext = cloud.getWXContext() //获取小程序的信息,如OPENID等

const _ = db.command;

try {

return await db.collection('address').add({

data: {

userid: wxContext.OPENID, //用户唯一id从wxContext获取

name: event.name, //云函数入参从event传入

phone: event.phone,

province: event.province,

city: event.city,

district: event.district,

detail: event.detail,

isdefault: event.isdefault,

createTime:db.serverDate()

},

success: function(res) {

}, fail: err => {

}

})

} catch(e) {}

}

  6.上传云功能

  写好云函数后,需要上传云函数在小程序中调用

  

  上传云功能

  7.调用云功能

   wx.cloud.callFunction({

name: 'addcart', //云函数名字

data: {

goodsid: goodsid, //云函数入参

},

success(res) {

console.log(res)

Toast.clear();

},

fail(err) {

Toast.clear();

console.log(err);

wx.showToast({

icon: 'none',

title: '出错啦!请稍后重试'

})

}

})

  二、cloud 数据库操作1.new 数据库

  

  新采集

  云数据库使用NoSql,表是一个集合

  

  添加一列数据

  它会自动生成_id作为主键

  2.增

  不建议不使用云功能直接在小程序中操作数据库。会有很多限制(比如:查询次数,直接数据库操作的最大次数是20),所以后续的数据库操作都是基于云函数中的。

  // 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init()

const db = cloud.database({

env: cloud.DYNAMIC_CURRENT_ENV

})

// 添加商品到购物车

exports.main = async (event, context) => {

const wxContext = cloud.getWXContext()

try {

return await db.collection('cart').add({ //会默认添加_id字段作为主键

data: {

userid: wxContext.OPENID,

goodsid: event.goodsid,

amount: 1,

selected: true,

createTime:db.serverDate()

},

success: function(res) {

}, fail: err => {

}

})

} catch(e) {

console.log(e);

}

}

  2.delete

  // 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init()

const db = cloud.database({

env: cloud.DYNAMIC_CURRENT_ENV

})

// 云函数入口函数

exports.main = async (event, context) => {

try {

return await db.collection('address').doc(event._id).remove({ //根据传入的主键删除

success: function(res) {

}, fail: err => {

}

})

} catch(e) {

console.log(e);

}

}

  3.改

  // 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init()

const db = cloud.database({

env: cloud.DYNAMIC_CURRENT_ENV

})

// 更新收货地址

exports.main = async (event, context) => {

const _ = db.command;

try {

return await db.collection('address').doc(event._id).update({

data: {

name: event.name,

phone: event.phone,

province: event.province,

city: event.city,

district: event.district,

detail: event.detail,

isdefault: event.isdefault,

},

success: function(res) {

}, fail: err => {

}

})

} catch(e) {

console.log(e);

}

}

  4.查

  // 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init()

const db = cloud.database({

env: cloud.DYNAMIC_CURRENT_ENV

})

// 获取当前用户的地址

exports.main = async (event, context) => {

const wxContext = cloud.getWXContext()

const _ = db.command; //引入查询指令

try {

return await db.collection('address').where({

userid: _.eq(wxContext.OPENID) //eq查询指令 表示等于

}).orderBy('createTime','desc').get() //按时间排序

} catch(e) {

console.log(e);

}

}

  limit(10) 表示取前 10 个数据并在 get 之前添加

  支持的查询命令

  5.多表查询

   return await db.collection('cart').aggregate()

.match({

userid: wxContext.OPENID,

selected: true

}).lookup({

from: 'goods', //关联的表名

localField: 'goodsid', //关联表名的字段

foreignField: '_id', //源表的字段

as: 'info' //组装成的对象

}).end()

  注意:where()和aggregate()不能共存,where()后面跟get(),aggregate()后面跟end()

  6.模糊查询

  db.collection('goods').where(_.or([ //or表示接受多个查询条件

{

name: db.RegExp({ //模糊查询

regexp: '.*' + event.name,

options: 'i',

})

},

{

subtitle: db.RegExp({ //组装成正则

regexp: '.*' + event.name, // 正则表达式,字符串形式

options: 'i', //表示忽略大小写

})

}

])).get()

  7.page 查询

  db.collection('todos').skip(10) //指定查询返回结果时从指定序列后的结果开始返回

.get()

.then(console.log)

.catch(console.error)

  三、连接腾讯云短信服务

  腾讯短信服务控制台

  短信接口

  (没想到在控制台找不到api入口)

  短信简介

  

  进入接口调试页面

  

  图像.png

  在腾讯云控制台找到对应的参数,添加,在线调用成功后直接复制代码

  测试时需要在本地安装依赖,右键云函数文件夹->在外部终端窗口打开->运行npm install tencentcloud-sdk-nodejs --save。上传云函数时,仍然可以选择云安装依赖

  // 云函数入口文件

const cloud = require('wx-server-sdk')

cloud.init()

const tencentcloud = require("tencentcloud-sdk-nodejs")

// 短信通知下单信息

exports.main = async (event, context) => {

const SmsClient = tencentcloud.sms.v20190711.Client;

const clientConfig = {

credential: { //api的秘钥id和密码 https://console.cloud.tencent.com/cam/capi 中生成

secretId: "",

secretKey: "",

},

region: "",

profile: {

httpProfile: {

endpoint: "sms.tencentcloudapi.com",

},

},

};

const client = new SmsClient(clientConfig);

const params = {

"PhoneNumberSet": [ //发送的号码

"86187xxxxxxxx" //国内的号码需要加 86

],

"TemplateParamSet": [ //发送的参数 对应模板中的{1} {2}

" ",

" "

],

"TemplateID": "xxx", //短信模板ID

"SmsSdkAppid": "xxxx", //SDKAppID 在短信的应用列表中获取 https://console.cloud.tencent.com/smsv2/app-manage

"Sign": "xxx" //短信签名内容 即模板中【】中的内容

};

client.SendSms(params).then(

(data) => {

console.log(data);

return data

},

(err) => {

console.error("error", err);

return err

}

);

}

  四、云开发优缺点

  优点:使用云功能可以方便的获取用户的OPENID,操作数据库,保存https配置。

  缺点:云功能访问速度很慢,不知道5g普及后会不会变

  最后,云小程序提供了cms。我还没有使用它。不知道能不能用。

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线