config.js文件说明

tables数据库表名配置

tables = {
    recipesName:'re-recipes',  //菜谱表
    recipeTypeName:'re-recipeType', //菜谱类别表
    usersName:'re-users', //用户注册表
    followRecipe:'re-followRecipe', //关注表
    userPbType:'re-userPbType', //用户发布的菜谱所属分类表
    userAdmin:'re-userAdmin',//用户管理员 / 添加菜谱 权限表
}

isAdminOpenid

单用户管理员配置变量。

api.js文件说明

add方法

const add = ( collectionName,data = {} )=>{

  //console.log( collectionName,data )
  //return
 return db.collection( collectionName ).add( {data} )
}

说明:添加数据的方法

find方法

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()
  
}

说明:查找数据的方法及分页

findById方法

const findById = (collectionName,_id='')=>{

  return db.collection( collectionName ).doc( _id ).get()
}

说明:查找一个数据通过数据id

findAll方法

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,
    }
  })
}

说明:查找所有数据(慎用:如果有需要)

updateById方法

const updateById = (collectionName,_id='',data={})=>{

  return db.collection(collectionName).doc( _id ).update({data})
}

说明:更新一条数据通过id

removeById方法

const removeById = (collectionName,_id='')=>{

  return db.collection(collectionName).doc( _id ).remove()
}

说明:删除一条数据通过id

remove方法

remove = ( collectionName,where = {} ) =>  {
  return db.collection( collectionName ).where( where ).remove()
}

说明:删除数据除id条件以外的条件

_uploader方法

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 )
    
}

说明: 实现文件上传功能

举例说明

  1. 引入公共模块
		import Api from '../../utils/api.js'
		import Config from '../../utils/config.js'
  1. 书写事件函数,调用Api方法
		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'
		})
		}
	}