歡迎閱讀MongoDB相關文章:
MongoDB基礎0——MongoDB的安裝與可視化管理工具
MongoDB基礎1——數據庫基本操作
MongoDB基礎2——Mongoose的操作指南
MongoDB基礎3——Mongoose的數據交互問題
MongoDB基礎X——踩過的坑以及解決方案(持續更新中)
1.從MongoDB取出數據后以json格式輸出到網頁的js代碼中
情景:從MongoDB中取出一個文檔,并使用JSON.stringify輸出到網頁的js代碼中(這里使用jade)
1.1 關于 "
的處理
使用 JSON.stringify
后渲染到jade模板的js代碼中,原來序列化后的引號會被 "
替換
res.render('list', {
// 渲染模板
title: '我的列表',
List_Json: JSON.stringify(obj),
});
最就會變成這樣:
解決:使用正則表達式替換所有的 "
var OL_List_Json = JSON.parse('#{List_Json}'.replace(/"/g, "\""));
最新(2016.11.15):
在對jade使用的過程中,有時候要直接輸出一個html標簽,但在jade頁面渲染后,直接把html代碼顯示出來了。
這個時候,我們就不應該再用 #{value}
來標識了,而應該用 !
替代 #
。同樣地,在將json的值賦值給js代碼時,也應該用 !{List_Json}
來標識。
1.2 關于MongoDB中 Date
類型的處理
對象中如果有Date類型的字段,輸出到jade模板并解析為json后會顯示為很奇怪的格式,如:
2015/10/26T07:16:13.000Z
這里是 ISO 8601
的時間表達格式。
國際標準化組織的國際標準ISO 8601是日期和時間的表示方法,全稱為《數據存儲和交換形式·信息交換·日期和時間的表示方法》。目前最新為第三版ISO8601:2004,第一版為ISO8601:1988,第二版為ISO8601:2000。
上面的字符串是日期+時間的表達方式。其中,T
是隔斷日期和時間的符號;000Z
代表了UTC時間,即0時區時間,如果是其他時區,則可用加減時差的方式,如要表示北京時間2004年5月3日下午5點30分8秒,可以寫成:
2004-05-03T17:30:08+08:00 或 20040503T173008+08
要想獲得標準的時間表達(這里說的“標準”是如2016/01/02 10:20:32
的格式,并已加入時差),可對上述字符串進行轉換
function _iso8601_to_standard_date(iso8601_str) //默認這個字符串是0時區
{
var standard_date = "";
standard_date = iso8601_str.replace("T", " ").replace(".000Z", "");
var date = "";
var time = "";
var str = "";
var myDate = new Date(standard_date);
myDate.setHours(myDate.getHours() + 8)
// 得到日期
str = myDate.getFullYear();
str = str+"/"+ol_pad((myDate.getMonth()+1),2);
str = str+"/"+ol_pad(myDate.getDate(), 2);
date = str;
// 得到時間
str = ol_pad((myDate.getHours()),2);
str = str+":"+ol_pad((myDate.getMinutes()),2);
str = str+":"+ol_pad((myDate.getSeconds()),2);
time = str;
return date + " " + time;
}
// 補齊指定長度補零
function ol_pad(num, n)
{
num = ""+num
var temp = num;
for(var i=0;i<(n-num.length);i++)
{
temp = "0"+temp
}
return temp
}
原創文章,未經許可,請勿轉載
作者:林曉州
日期:2016.09.19
QQ:1139904786
Blog:http://blog.csdn.net/kkdestiny