1 定义 MongoDB 的 Schema 结构
// 获取 mongodb 组件 var mongoose = require('mongoose');/*** 表结构定义 * */var schema = new mongoose.Schema({ uid: String, // 用户 ID user_name: String, // 用户名称 password: String, // 登录密码 real_name: String, // 真实姓名 phone: String, // 电话号码 email: String, // 电子邮箱 group_id: Number, // 用户所属分组 ID status: Number, // 用户状态 0: 注销, 1: 有效, 2: 超级管理员 comment: String, // 备注信息 insert_time: Date, // 添加时间 update_time: Date // 更新时间});mongoose.model('User', schema);
2 连接 MongoDB2.1 定义 MongoDB 的连接配置
/*** mongodb 数据库连接配置信息 * */module.exports = { mongodb: "mongodb://192.168.1.100:20001/test-db", logLevel: 'INFO',}
2.2 MongoDB 连接和初始化表的 Schema 结构
// 导入 mongodb 连接配置 var config = require("../../../config/appConfig.js");// 导出 mongodb 连接 var mongoose = require("mongoose");/*** 创建 mongodb 数据库连接对象 * */module.exports = function () { var mongodb = mongoose.connect(config.mongodb, {useNewUrlParser: true}); mongodb.on("error", function (err) { console.error("mongodb connected failed,message:" + err.message, err); }); // 用户信息 Schema 结构 require("../model/userModel.js"); // 权限信息 Schema 结构 require("../model/permissionModel.js"); // 用户分组信息 Schema 结构 require("../model/userGroupModel.js"); // 用户权限关联信息 Model require("../model/permissionRelationModel.js"); return mongodb;};
3 查询一条记录
/*** 根据用户名匹配用户信息 * */exports.findUserByName = async function (userName, callback) { let err = null, doc = null; try { doc = await User.findOne({user_name: userName}); } catch (e) { err = e; log.error("find user by name error,message:" + err.message, e); } callback(err, doc);};
4 新增记录
/*** 新增用户 * */exports.addUser = async function (jsonParam, callback) { var uid = "U" + utilTool.generateUid(); var user = new User(); user.uid = uid; user.user_name = jsonParam.user_name; user.password = jsonParam.password; user.real_name = jsonParam.real_name; user.phone = jsonParam.phone; user.email = jsonParam.email; user.group_id = jsonParam.group_id; user.comment = jsonParam.comment; user.status = 1; user.insert_time = new Date(); let err = null, doc = null; try { doc = await User.create(user); if (doc != null) { // 修改用户组成员信息 await UserGroupDao.updateGroupMember(jsonParam.group_id, uid, function (err, group) { if (err) { log.error("update user group member on add user error,groupId=" + jsonParam.group_id + ",error:" + err.message, err); } }); } } catch (e) { err = e; log.error("create user error,message:" + err.message, e); } callback(err, null);};
5 更新记录
/*** 更新用户信息 * */exports.updateUser = async function (jsonParam, callback) { let err = null, doc = null; try { doc = await User.findOne({uid: jsonParam.uid}); if (doc == null) { log.error("user is not exist on edit,username:" + jsonParam.user_name); callback(err, doc); } else { var oldGroup = doc.group_id; doc.user_name = jsonParam.user_name; doc.password = jsonParam.password; doc.real_name = jsonParam.real_name; doc.phone = jsonParam.phone; doc.email = jsonParam.email; doc.group_id = jsonParam.group_id; doc.status = jsonParam.status; doc.comment = jsonParam.comment; doc.update_time = new Date(); await User.update({uid: jsonParam.uid}, {$set: doc}); // 修改用户组成员信息 await UserGroupDao.updateGroupMemberOnEdit(jsonParam.group_id, oldGroup, jsonParam.uid, function (err, doc) { if (err) { log.error("update user group member on edit user error,groupId=" + jsonParam.group_id + ",error:" + err.message, err); } }); } } catch (e) { err = e; log.error("edit user error,message:" + err.message, e); } callback(err, doc);};
6 删除记录
/*** 删除用户 * */exports.delUser = async function (groupId, uid, callback) { let err = null; try { await User.remove({uid: uid}); // 删除用户分组成员信息 await UserGroupDao.deleteGroupMember(groupId, uid, function (err) { if (err) { log.error("delete user group member on delete user error,groupId=" + groupId + ",error:" + err.message, err); } }); } catch (e) { log.error("del user error,message:" + err.message, e); } callback(err);};
7 分页查询
/*** 计划任务信息查询 * @param queryParam: 查询参数 json 对象 * @param callback: 回调函数 * */exports.listTasks = async function (queryParam, callback) { var condition = {}; if (UtilTool.isNullOrEmpty(queryParam.task_id) === false) { condition.task_id = queryParam.task_id; } if (UtilTool.isNullOrEmpty(queryParam.name) === false) { condition.name = eval('/' + queryParam.name + '/'); } if (UtilTool.isNullOrEmpty(queryParam.plan_type) === false) { if (queryParam.plan_type != "0") { condition.plan_type = queryParam.plan_type; } } let err = null, docs = null, count = 0; try { count = await TaskScheduler.count(condition); if (count> 0) { docs = await TaskScheduler.find(condition) .skip((queryParam.pageNo - 1) * queryParam.pageSize) .limit(queryParam.pageSize) .sort({insert_time: -1}) .exec(); } } catch (e) { err = e; log.error("query tasks error,message:" + err.message, e); } callback(err, docs, count);};
8 数据排序
Mongoose 对查询结果进行排序, 使用 sort({field:-1})进行排序, 其中 {field:-1} 表示降序排序,{field:1}表示升序排序. 如:
Permission.find({'system_code': systemcode}).sort({'type': 1, 'sort': 1}).exec();
来源: http://www.92to.com/bangong/2018/08-20/34038718.html