托管小程序云开发 封装数据库操作公共类 BaseModel.js

一、数据库操作公共类

将常用的增删改查操作进行封装,这样在调用这些方法的函数的代码更加整洁,结构更清晰。

云函数 router目录中新建文件 models/BaseModel.js

// 公共BaseModel
const cloud = require('wx-server-sdk');
cloud.init({
  // 自身环境
  env: cloud.DYNAMIC_CURRENT_ENV,
  traceUser: true,
});
const db = cloud.database();
const _ = db.command

/**
 * 按id查询
 * @param  {object} model       集合名称
 * @param  {String} id          查询id
 * @return  {object|null}       查找结果
 */
const findById = (model, fields = {} , id ) => {
 
  return new Promise((resolve,reject)=>{
    db.collection(model)
    .doc(id)
    .field(fields) 
    .get()
    .then((res)=>{     
      resolve(res.data)
    })
    .catch((err)=>{
      reject(err)
    })
  })
   
  
}


/**
 * 查询 带多条件的
 * @param  {object} model         集合名称
 * @param  {Object} [options={}]    查询条件
 * @param  {Number} [page]        开始记录数
 * @param  {Number} [size]        每页显示的记录数
 * @return  {object|null}         查找结果
 */
const query = (model, fields = {}, options = {}, page = 0, size = 10, order = { name: '_id', orderBy:'asc'} ) => { 
   
  
    return new Promise((resolve,reject)=>{
      db.collection(model)
      .where(options)     
      .field(fields) 
      .skip(page)
      .limit(size)
      .orderBy(order.name, order.orderBy)
      .get()
      .then((res) => {  
        //console.log('res=',res)     
        resolve(res.data);
      })
      .catch((err) => {
        console.log(err)
        reject(err);
      });
    })

}

/**
 * 新增
 * @param  {object} model  集合名称
 * @param  {object} params 参数
 * @return {object| null}  操作结果
 */
const add = (model, params) => {
 
    return new Promise((resolve,reject)=>{
      db.collection(model).add({
        data: params
      })
      .then((res) => {       
        resolve(res) //返回的是添加的记录的_id
        //resolve('success');
      })
      .catch((err) => {
        reject(err);
      })
    })  
 
}

/**
 * 按条件统计记录数
 * @param {object} model  集合名称
 * @param {object} options 参数
 *  @return {object| null}  操作结果
 */
const count = (model, options = {}) => {
 
  return new Promise((resolve,reject)=>{
    db.collection(model)
    .where(options)
    .count()
    .then((res) => {       
        console.log('res=',res)     
        resolve(res.total);
    })
    .catch((err) => {
      reject(err);
    })
  })  

}

/**
 * 按id编辑
 * @param  {object} model      集合名称
 * @param  {object} params     参数
 * @return {object|null}       操作结果
 */
const update = (model, params) => {
  
    return new Promise((resolve,reject)=>{
       db.collection(model).doc(params._id)
        .update({
          data: params
        })
        .then((res) => {       
          resolve('success');
        })
        .catch((err) => {
          reject(err);
        })
      })  

 
}
/**
 * 按条件编辑
 * @param  {object} model      集合名称
 * @param  {object} condition     参数
 * * @param  {object} params     值
 * @return {object|null}       操作结果
 */
const updatebywhere = (model, condition,params) => {
  console.log('condition=',condition)
  console.log('params=',params)
  return new Promise((resolve,reject)=>{
     db.collection(model)
      .where(condition)
      .update({
        data: params
      })
      .then((res) => {       
        resolve('success');
      })
      .catch((err) => {
        reject(err);
      })
    })  


}
/**
 * 按id删除结果
 * @param  {object} model      集合名称
 * @param  {String} id         参数
 * @return {object|null}       操作结果
 */
const remove = (model, id) => {
  return new Promise((resolve,reject)=>{
    db.collection(model)
    .doc(id)
    .remove()
    .then((res) => {       
      resolve('success');
    })
    .catch((err) => {
      reject(err);
    })
  })  
}
/**
 * 按条件删除
 * @param  {object} model      集合名称
 * @param  {String} condition  条件
 * @return {object|null}       操作结果
 */
const removebywhere = (model, condition) => {
  return new Promise((resolve,reject)=>{
    db.collection(model)
    .where(condition)
    .remove()
    .then((res) => {       
      resolve('success');
    })
    .catch((err) => {
      reject(err);
    })
  })  
}

module.exports = {
  query,  
  findById,
  add,
  update,
  updatebywhere,
  remove,
  removebywhere,
  count

}



展开阅读全文

页面更新:2024-03-07

标签:操作   整洁   函数   条件   常用   名称   参数   编辑   结构   代码   数据库   程序

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top