一,各類功能的api用法說明
二,小程序端API和服務端API的區別
服務端API用於雲函數運行環境。
Server 端的 API 與小程序端基本保持一致,有如下不同:
Server API 不再接受回調(success, fail, complete),統一返回 Promise
Server 端有批量寫和批量刪除的權限,即可在集合或查詢語句上調用 update 或 remove
Server 端獨有 API 如創建集合(db.createCollection)
數據庫 API 都是懶執行的,這意味着只有真實需要網絡請求的 API 調用纔會發起網絡請求,其餘如獲取數據庫、集合、記錄的引用、在集合上構造查詢條件等都是不會觸發網絡請求的。
例如Users.where({ _openid: openid}).get是可以在本地獲取
而
db.collection(‘Users’).where({ _openid: wxContext.OPENID}).update就不可以,只能在雲端來完成!
三,實踐例子,增刪查改的運用
1,記錄用戶授權時間
已有數據時更新數據,沒有數據時插入一條
/**先行判斷是否錄入過,在complete結束回調裏處理,不然未查詢完就已經開始處理了 */
judge: function () {
var that = this;
let openid = app.globalData.openid;
let id;
const db = wx.cloud.database();
const Users = db.collection('Users');
Users.where({ _openid: openid}).get({
success: function (res) {
console.log('get-Users=' + res.data[0]._id )//因爲只有一條數據所以加[0]
id = res.data[0]._id;
},
fail: function (err){
console.error('err:', err)
},
complete: function (ok) {
console.log(id + '-----------' + util.isEmpty(id));
that.dispost(id)
},
});
},
/**處理 */
dispost:function(id){
const db = wx.cloud.database();
const Users = db.collection('Users');
if (id) {
Users.doc(id).update({
data: { authorization_time: util.formatTime(new Date()) },
success: function (res) {
console.log('update-authorization_time-success' + util.formatTime(new Date()))
},
fail: err => {
console.error('update-authorization_time-err:', err)
}
})
}
else {
Users.add({
data: { authorization_time: util.formatTime(new Date()) },
success: function (res) {
console.log('add-authorization_time-success' + util.formatTime(new Date()))
},
fail: err => {
console.error('add-authorization_time-err:', err)
}
})
}
},
2,新增聯繫人
const db = wx.cloud.database();
const Users = db.collection('Contact').add({
data: {
cooc_name: e.detail.value.cooc_name,
cooc_papers_class: e.detail.value.cooc_papers_class,
cooc_papers_no: e.detail.value.cooc_papers_no,
cooc_sex: e.detail.value.cooc_sex,
cooc_calss: that.data.cooc_calss,
},
success: function (res) {
console.log('add-Contact-ok:' + JSON.stringify(res))
},
fail: err => {
console.error('add-Contact-err:', err)
}
})
3,用戶註冊,修改個人信息
雲函數
// 雲函數入口文件
const cloud = require('wx-server-sdk')
cloud.init({
env: cloud.DYNAMIC_CURRENT_ENV
})
const db = cloud.database()
const _ = db.command
// 雲函數入口函數
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
try {
return await db.collection('Users').where({
_openid: wxContext.OPENID
})
.update({
data: {
comp_name: event.comp_name,
comp_sex: event.comp_sex,
comp_email: event.comp_email,
comp_mobile: event.comp_mobile,
comp_work_pcp: event.comp_work_pcp,
comp_work_address: event.comp_work_address,
comp_img: event.comp_img,
},
})
} catch (e) {
console.error(e)
}
}
更新
//雲函
wx.cloud.callFunction({
name: 'updateUserInfo',
data: {
comp_name: e.detail.value.comp_name,
comp_sex: e.detail.value.comp_sex,
comp_email: e.detail.value.comp_email,
comp_mobile: e.detail.value.comp_mobile,
comp_work_pcp: that.data.citykey,
comp_work_address: that.data.address,
},
complete: res => {
console.log('updateUserInfo=' + JSON.stringify(res) )
}
})
獲取數據
let openid = app.globalData.openid;
const db = wx.cloud.database();
const Users = db.collection('Users');
Users.where({ _openid: openid }).get({
success: function (res) {
console.log(res)
that.checkED(arrSex,res.data[0].comp_sex);
that.setData({
arrSex: arrSex,
comp_name: res.data[0].comp_name,
comp_sex: res.data[0].comp_sex,
comp_email: res.data[0].comp_email,
comp_mobile: res.data[0].comp_mobile,
//comp_work_pcp: res.data[0].citykey,
address: res.data[0].comp_work_address,
})