###model 处理分页代码
Mcontact.getTen = function(mcname,page,callback) {
var query = {};
if (mcname) {
query.mcname = mcname;
}
//使用 count 返回特定查询的文档数 total
mcontactModel.count(query, function (err, total) {
//根据 query 对象查询,并跳过前 (page-1)*10 个结果,返回之后的 10 个结果
//sort({create_at: -1}).
mcontactModel.find(query).skip((page - 1)*10).limit(10).exec(function (err, docs) {
if (err) {
return callback(err);
}
docs.forEach(function(doc) {
// item 对应每条记录
doc.create_at = moment(doc.create_at).format('YYYY MM DD');
doc.update_at = moment(doc.update_at).format('YYYY/MM/DD');
})
console.log('docs:'+docs);
callback(null, docs, total);
});
});
};
###控制层调用代码
router.get('/', function(req, res) {
//判断是否是第一页,并把请求的页数转换成 number 类型
var page = req.query.p ? parseInt(req.query.p) : 1;
//查询并返回第 page 页的 10 篇文章
Mcontact.getTen(null, page, function (err, mcontacts, total) {
if (err) {
mcontacts = [];
}
res.render('mcontact', {
mcontacts: mcontacts,
page: page,
isFirstPage: (page - 1) == 0,
isLastPage: ((page - 1) * 10 + mcontacts.length) == total,
user: req.session.user,
success: req.flash('success').toString(),
error: req.flash('error').toString()
});
});
});
###EJS 显示
<% mcontacts.forEach(function (mcontact, index) { %>
<tr class="">
<td class="inbox-small-cells">
<input type="checkbox" class="mail-checkbox">
</td>
<td class="view-message "><%=mcontact.mcname%><span class="label label-danger pull-right"><%=mcontact.tag%></span></td>
<td class="view-message "><%=mcontact.mcemail%></td>
<td class="view-message "><%=mcontact.mcpassword%></td>
<td class="view-message dont-show"><%=mcontact.create_at%></td>
<td class="view-message dont-show"><%=mcontact.update_at%></td>
</tr>
<% }) %>
###最终结果
网页啊 abbc[@sina](/user/sina).com 123123 Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间)
行吗 xingma[@qq](/user/qq).com qweqweqwe Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间)
行啊 ok[@ok](/user/ok).com qweqweqwe Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间)
好了吗 ho[@hotmail](/user/hotmail).com qweqweqwe Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间)
##为什么格式化没有效果啊。我叉,到底是哪里出了问题?求大神指点啊 解决方法:
docs.forEach(function(doc) {
// item 对应每条记录
doc.create_at_string = moment(doc.create_at).format('YYYY-MM-DD');
doc.update_at_string = moment(doc.update_at).format('YYYY-MM-DD');
// doc.update_at = moment(doc.update_at).format('YYYY-MM-DD');
/***原理无论你怎么格式化,doc.update_at这个逗比都是日期格式,
所以你怎么变它都会给你整成ISO-1的日期,经过3楼的大神一说,仔细一想确实啊。
昨晚被这个折磨了接近4个小时。资料少的可怜。
***/
})
EJS引用
//加个lean试试 mcontactModel.find(query).skip((page - 1)*10).limit(10) .lean().exec(function (err, docs) {})
我遇到过这个问题,你callback里的参数mcontacts 是mongoose或者类似数据库访问组件直接返回的类型吧??这些类型的create_at属性其实是个function,你传递日期字符串,它又会给你转换成Date类型.
我的做法是, doc.create_at_string = moment(doc.create_at).format(‘YYYY MM DD’);
console.log('doc.create_at:Mon Jul 07 2014 00:00:00 GMT+0800 (中国标准时间) doc.update_at:Mon Jul 07 2014 00:00:00 GMT+0800 (中国标准时间) doc.create_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.update_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.create_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.update_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.create_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.update_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.create_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.update_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.create_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) doc.update_at:Tue Jul 08 2014 00:00:00 GMT+0800 (中国标准时间) ')
mcontactModel.find(query).skip((page - 1)*10).limit(10).exec(function (err, docs) {
if (err) {
return callback(err);
}
docs.forEach(function(doc) {
// item 对应每条记录
y=moment(doc.create_at).format('YYYY');
m=moment(doc.create_at).format('MM');
d=moment(doc.create_at).format('DD');
uy=moment(doc.update_at).format('YYYY');
um=moment(doc.update_at).format('MM');
ud=moment(doc.update_at).format('DD');
doc.create_at =y+'.'+m+'.'+d; //moment(doc.create_at).format();
doc.update_at =uy+'.'+um+'.'+ud;
console.log('doc.create_at:'+doc.create_at);
console.log('doc.update_at:'+doc.update_at);
// console.log('doc.create_at:'+doc.create_at+',doc.update_at'+doc.update_at
// +",moment(doc.update_at).format('YYYY'):"+moment(doc.update_at).format('YYYY')
// +",moment(doc.update_at).format('DD'):"+moment(doc.update_at).format('MM')
// +"moment(doc.update_at).format('DD'):"+moment(doc.update_at).format('DD'));
})
console.log('docs:'+docs);
callback(null, docs, total);
});
});