将常用的增删改查操作进行封装,这样在调用这些方法的函数的代码更加整洁,结构更清晰。
云函数 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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号