2012-06-04 81 views
2

我使用mongoose.js將少量數據集保存到MongoDB。但是,我在使用express.js和ejs在html網站上顯示它們時遇到了問題。使用Express.js顯示MongoDB的日期

這裏是我的情況:

型號

var mongoose = require('mongoose'); 

var Schema = mongoose.Schema; 
var ObjectId = Schema.ObjectId; 

var ItemSchema = new Schema({ 
    _id: ObjectId, 
    creationTime: Date, 
    modificationTime: Date, 
    title: String 
}); 
var Item = mongoose.model('item', ItemSchema); 
module.exports.Item = Item; 

路線:

app.get('/item/:id', function(req, res) { 

    Item.findById(req.params.id, function(err, doc){ 

     console.log(doc); //This check displays everything correctly on console 

     res.render('item.html.ejs', { 
      item : doc 
     }); 
    }); 
}); 

查看:

<h1><%= item.title %>:</h1> 
<p>Creation: <%= item.creationDate %></p> 
<p>Modification: <%= item.modificationDate %></p> 

此設置的結果是標題正確顯示,但兩個日期都是undefined

我認爲它與MongoDB的ISODate格式有關。但我無法找到一個解決方案,如何將其轉換爲在html視圖中顯示。

我感謝您的幫助。乾杯

+1

我不認爲這是關於MongoDB的日期格式,但如果你願意,你可以使用[moment.js(HTTP:// momentjs .com /)將其轉換爲更易讀的格式 – Mustafa

+0

您可以在節點中使用moment.js。 – chovy

+0

認真嗎?我對這個問題感到低落?這是什麼? reddit的? – Sven

回答

1

如果您只是複製並粘貼代碼,解決方案非常簡單。

在你的模型,你定義創建Time並在模板修改Time您嘗試訪問item.creation Date和item.modification Date

之後,你應該能夠看到其他未定義的東西,但你可能仍然需要將其轉換成適當的日期格式。

+0

在生活中有時候會問自己,如果你完全遲鈍 - 。 - 謝謝你這麼多:-)發生 – Sven

+0

樂意;-) – TheHippo

9

我有我的項目中使用moment.js的以下幫助者。

date: function(date){ 
    moment(date).format('YYYY-MM-DD hh:mm:ss'); 
}, 
fromNow: function(date){ 
    moment(date).fromNow() 
} 
+0

感謝您的提示。這是一個非常好的幫手:-) – Sven

+0

不錯的一個。謝謝你的提示! – Tronic

1

我用上面的例子中添加EJS過濾器,但我不得不改變它一點點地得到它的工作:

創建「created_at」屬性上的貓鼬模式並自動創建保存( ):

var ItemSchema = new Schema({ 
    name : { type: String, required: true, trim: true } 
    , created_at : { type: Date } 
}); 


ItemSchema.pre('save', function(next){ 
    if (!this.created_at) { 
    this.created_at = new Date; 
    } 
    next(); 
}); 

安裝力矩(和寫入的package.json)

npm install moment --save 

添加過濾器在app.js或任何你要定義過濾器EJS:

var moment = require('moment'); 

ejs.filters.fromNow = function(date){ 
    return moment(date).fromNow() 
} 

使用在page.ejs過濾

<span class="created_at"><%=: item.created_at | fromNow %></span>