tables = {
recipesName:'re-recipes', //菜谱表
recipeTypeName:'re-recipeType', //菜谱类别表
usersName:'re-users', //用户注册表
followRecipe:'re-followRecipe', //关注表
userPbType:'re-userPbType', //用户发布的菜谱所属分类表
userAdmin:'re-userAdmin',//用户管理员 / 添加菜谱 权限表
}
单用户管理员配置变量。
const add = ( collectionName,data = {} )=>{
//console.log( collectionName,data )
//return
return db.collection( collectionName ).add( {data} )
}
说明:添加数据的方法
const find = (collectionName,where={},limit=5,page=1, orderBy={ field:'_id',sort:'desc' })=>{
let skip = ( page - 1) * limit
return db.collection(collectionName).where( where ).limit(limit).skip(skip).orderBy( orderBy.field,orderBy.sort ).get()
}
说明:查找数据的方法及分页
const findById = (collectionName,_id='')=>{
return db.collection( collectionName ).doc( _id ).get()
}
说明:查找一个数据通过数据id
const findAll = async (collectionName,where={})=>{
const MAX_LIMIT = 20 //每次小程序的限制是20条
// 先取出集合记录总数
const countResult = await db.collection(collectionName).where(where).count()//获取一共多少条数据
const total = countResult.total
// 计算需分几次取
const batchTimes = Math.ceil(total / 100)
// 承载所有读操作的 promise 的数组
const tasks = []
for (let i = 0; i < batchTimes; i++) {
const promise = db.collection(collectionName).where(where).skip(i * MAX_LIMIT).limit(MAX_LIMIT).get()
tasks.push(promise)
}
// 等待所有
return (await Promise.all(tasks)).reduce((acc, cur) => {
return {
data: acc.data.concat(cur.data),
errMsg: acc.errMsg,
}
})
}
说明:查找所有数据(慎用:如果有需要)
const updateById = (collectionName,_id='',data={})=>{
return db.collection(collectionName).doc( _id ).update({data})
}
说明:更新一条数据通过id
const removeById = (collectionName,_id='')=>{
return db.collection(collectionName).doc( _id ).remove()
}
说明:删除一条数据通过id
remove = ( collectionName,where = {} ) => {
return db.collection( collectionName ).where( where ).remove()
}
说明:删除数据除id条件以外的条件
const _uploader = async (filePaths)=>{
//console.log(filePaths,123)
let fileUploaderPormise = []//存储所有的promises对象
//forEach是同步的。瞬间完成
filePaths.forEach((item,index)=>{
//获取文件名后缀
let suffixName = item.url.split('.').pop()
//console.log( suffixName )
let fileName = new Date().getTime() + '-' + index + '.' + suffixName
//console.log( fileName )
let uploaderPromise = wx.cloud.uploadFile({
cloudPath:'recipes/' + fileName,//存储到云存储的路径 包括文件名
filePath:item.url,//本地的临时路径
})
fileUploaderPormise.push( uploaderPromise )
})
//console.log( fileUploaderPormise,1111 )
return await Promise.all( fileUploaderPormise )
}
说明: 实现文件上传功能
import Api from '../../utils/api.js'
import Config from '../../utils/config.js'
async _doAddRecipeType(){
let typeName = this.data.typeName //前台传过来的数据
//1.如果typeName为空,则不能添加,且给提示
if(!typeName){
wx.showToast({
title: '分类不能为空',
icon:'none'
})
return
}
let addTypeResult =await Api.add( Config.tables.recipeTypeName,{typeName} )
if( addTypeResult._id ){
wx.showToast({
title: '添加成功',
duration:3000
})
}else{
wx.showToast({
title: '添加失败',
icon : 'none'
})
}
}