node-mongoose
发布于 8 年前 作者 mengll 3050 次浏览 来自 分享

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;

回到顶部