var mongoose = require(‘mongoose’); var schema = mongoose.Schema; var config = require(’…/config.defalut.js’);
// 创建新闻的模型的操作 var Newsmodel = new schema({ title:{type:String,default:’’},//文章的标题 keys:{type:String,default:’’},//关键字 desc:{type:String,default:’’},//描述 autor:{type:String,default:’’},//发布人 addTime:{type:Date,default:Date.now},//添加的实现 content:{type:String,default:’’}, //文章发布的内容 imgs:{type:String,default:’’}, //文章的图片 category:{type:String,default:’’},//文章的分类 type:{type:Number,default:0},//预留字段表示当前的文章的类型是是军事,教育 status:{type:Number,default:0},//标记当前的文章的类型 0 表示的正常 1 表示的删除, 3 表示的已经过期了 looks:{type:Number,default:0}, //当前的产看的量 upnum:{type:Number,default:0} //赞的数量
}); //创建相关的索引 Newsmodel.index({category:1}); Newsmodel.index({keys:1}); //创建对外接口 var mongoose = require(‘mongoose’); mongoose.connect(“mongodb@127.0.0.1:27017/mengll”,function(err){ if(err){ console.log(err); }
});
//引入相关的文件的 require(’./user.model.js’); require(’./category.model.js’); require(’./news.model.js’); module.exports.User = mongoose.model(‘user’); module.exports.Category = mongoose.model(‘category’); module.exports.News = mongoose.model(‘Newsmodel’);
//请求 //创建数据库操作的代理的模型 var Newsmodel = require(’…/models’).News; var async = require(‘async’);
//首先是获取当前的文章的列表的 /* @query 插叙的条件 */ exports.getList = function(query,option,callback){ try{ //异步的执行相关的操作 async.waterfall([function(calback){ //查询当前的所有的文件 var nums = Newsmodel.count(query,function(err,data){ //如果正确则 if(err){ console.log(‘您好获取当前的信息的列表的时候调用!’,err); calback(err); //调用错误的方法 }else{ calback(null,data); //回调当前的状态 }
});
},function(dat,calback){
//返回当前的信息的列表的信息
Newsmodel.find(query,function(err,dat){
//console.log('this is the data!',dat);
calback(null,dat);//返回当前的文章的
});
}],function(err,dosc){
if(err){
console.log('获取当前的新闻的列表的出错===>',err);
}else{
callback(null,dosc);
}
});
}catch(e){
console.log("获取文章的列表的信息的出错---》",e);
}
};
/* @查看某一条相关的咨询的内容 */
exports.showOne = function(query,callback){ try{ // 产看当前的一个相关的信息 async.waterfall([function(callback){ // 查找当前的一篇文章 Newsmodel.find(query,function(err,data){ if(err){ return console.log(‘查找文章的时候出现错误了!’,err); }else{ callback(null,data); }
});
},function(dat,callback){
var userid = dat.autor;
//查询当前的用户的信息并将用户的信息发送到
callback(null,dat);
}],function(err,data){
//处理最终的回调结果的实现
if(err){
return console.log("您好查找"+query+'信息的时候出错了',err);
}
return callback(data);
});
}catch(e){
console.log(e);
}
};
/* @query 查找一条相关的内容修改相关的信息 @callback 回调函数 */
exports.editeOne = function(query,options,callback){ //修改一个相关的文件 async.waterfall([function(callback){ Newsmodel.find(query,callback); },function(data,callback){ var id = data._id; Newsmodel.update({_id:id},{$set:{}},options,function(err,dosc){ if(err){ return console.log(‘你好,更新内容的时候失败了!’,err); } callbaock(null,data); });
}],function(err,dosc){
if(err){
return console.log('您好,你现在的内容是不正确的!',err);
}
return dosc;//你好更改的成功
});
};
/* @query 要更新的事哪个,业务 @callback 修改完成后的回调的函数 */
exports.updateOne = function(query,callback){ //使用刚学习的Promise来处理当前的方法 // var pp = new Promi var pro = new Proise(function(resolve,reject){ //查询当前的对象 var count = Newsmodel.count(query); if(count){ return callback(); } if(count){ resolve(); }else{ //当前的对象不存在直接调用相关的错误的处理的方法 reject(); } //处理当前的函数的表达 pro().then(function(){ console.log(‘hello this is the frist message!’); },function(){ console.log(‘some error in this function that is not found the data!’); });
});
};
/* @data 添加新闻资讯 */
exports.addNews = function(data,bbck){
//创建
async.waterfall([function(callbacks){
//数据的营销的方案
var count = Newsmodel.count({title:data.title,categoy:data.category},function(err,data){
if(err){
console.log('您好产生错误!',err);
}else{
console.log('查看当前的',data);
if(data){
callbacks(null,0);
}else{
callbacks(null,1);
}
}
});
},function(dat,callbacks){
//查询不存在后添加
console.log('获取当前的用户的填写的信息',dat);
if(dat){
var model = new Newsmodel(data);
model.save(function(err,callback){
if(err){
console.log('您好添加新闻的时候失败了!');
callbacks(err,{'msg':'你好添加新闻失败!'});
}
else{
callbacks(null,data);
}
});
}
}],function(err,data){
if(err){
console.log('错误了!',err);
bbck({'msg':'你好添加失败了!'+err,'type':false});
}else{
console.log('添加成功!');
bbck({'msg':'您好添加成功','type':true}); //异步的方式回调函数 不能使用同步的变量接收参数,这样会产生undefined
}
});
};
///创建一个测试的方法 module.exports.testone = function(){ var data = Newsmodel.find({}); data.then(function(dat){ console.log(‘nowget—>’,dat); });
}; //调用 var newsModel = require(’…/proxy/news’); //创建一个新闻的对象 var news = { getList:function(req,res,next){ res.render(‘news/index’,{‘title’:‘news’}); },
addNews:function(req,res,next){
var status = newsModel.addNews(req.body,function(data){
console.log(data);
//记的要创建回调的函数,不然异步的操作,无法获取相关的数
if(data.type == false){
res.send('您好添加失败!');
}else{
res.send('您好添加成功了!');
}
});
},
//创建测试promise的防范的实验
testone:function(req,res,next){
var dd = newsModel.testone();
if(dd){
res.send('ddd');
}else{
res.send('bbbb');
}
},
//跳转到添加的页面
add:function(req,res,next){
res.render('news/add');
}, //获取新闻资讯的
getList:function(req,res,next){
var dat = newsModel.getList({},null,function(err,dd){
if(err){
res.send('there has some error ! in this page !');
}else{
res.send(dd); // 打印相关的数据,到页面
}
});
}
}; module.exports = news;