var mongoose = require('../utils/mongoose').mongoose; var crypto = require('crypto'); var Schema = mongoose.Schema; // session模型 var SessionSchema = new Schema({ uid: {type: String, index: true}, socket: {type: String,index:true}, // 类型 type: {type: String, default: "customer"}, // 客服编号 kefu_id: {type: String,default:""}, nickname: {type: String}, status: {type: Number,default:1}, create_at: {type: Date, default: Date.now} }); //session model instance const sessionModel = mongoose.model("sessions", SessionSchema); module.exports = { find(uid,status = 1) { return new Promise((success, fail) => { let condition = {uid}; if(status != null){ condition.status = status; } sessionModel.findOne(condition, (err, session) => { if (err) fail(err); else success(session) }) }); }, createOrUpdate(condition,data){ return new Promise((success, fail) => { sessionModel.findOne(condition, (err, session) => { if(err){ fail(err);return; } try{ if(session){ if(typeof(data) == "function"){ data = data.call(this,false) } sessionModel.update(condition,data, (err, doc) => { if (err) fail(err); else success(doc); }) }else{//新增 if(typeof(data) == "function"){ data = data.call(this,true) } let model = new sessionModel(data); model.save(data, (err, doc) => { if (err) fail(err); else success(doc); }) } }catch (e) { fail(e) } }); }); }, create(data) { return new Promise((success, fail) => { sessionModel.save(data, (err, doc) => { if (err) fail(err); else success(doc); }) }); }, update(uid, data) { return new Promise((success, fail) => { sessionModel.findOneAndUpdate({uid}, data, success); }); }, remove(uid) { return new Promise((success, fail) => { sessionModel.findOneAndRemove({uid}, data, success); }); }, // 查询列表 findByCondition(data) { return new Promise((success, fail) => { sessionModel.find(data, (err, doc) => { if (err) fail(err); else success(doc); }) }); } }