2014-02-21 2 views
2

Я изучаю nodeJS сейчас, поэтому я сделал этот учебник (http://scotch.io/tutorials/javascript/creating-a-single-page-todo-app-with-node-and-angular), и теперь хочу добавить временную метку с каждым todo.Временная метка с nodejs и mongoose

создать простой файл (time.js) с moment.js

var moment = require('moment'); 
moment().format(); 
var mytime = moment().format('MMMM Do YYYY, h:mm:ss a'); 

module.exports = { 
time : mytime 
} 

и подключить его к моим маршруты файл

var qtime = require('./time'); 
app.post('/api/todos', function(req, res) { 
... 
Todo.create({ 
.... 
time : qtime.time} 
.... 

Здесь я получаю мое время запуска сервера, а не время когда я POST (вот что мне нужно)

Здесь из

"time": "February 21st 2014, 12:00:40 pm", 
"time": "February 21st 2014, 12:00:40 pm", 
"time": "February 21st 2014, 12:00:40 pm", 
... 

Как получить текущее время по каждому запросу?

ответ

2

Существует функция, которая предоставляет вам схему mongoose, которая обрабатывает значения по умолчанию. Эти значения по умолчанию могут быть рассчитаны. В этом примере, правильный и простой способ добиться того, что вы спрашиваете здесь заключается в следующем

new Schema({ 
    date: { type: Date, default: Date.now } 
}) 

При сохранении объекта, вам не нужно больше, чтобы указать в поле «дата», мангуст будет заботиться о нем !

Mongoose Docs: http://mongoosejs.com/docs/2.7.x/docs/defaults.html (старый) http://mongoosejs.com/docs/schematypes.html (текущая версия)

+0

It 'ы здорово, спасибо! – corpz

0

Зачем проходить через всю эту дополнительную работу вместо того, чтобы определять свое поле времени в вашей схеме как тип Date и использовать промежуточное программное обеспечение для установки?

var todoSchema = mongoose.Schema({ 
    time: Date 
}); 

todoSchema.pre('save', function (next) { 
    if (!this.isNew) next(); 
    this.time = new Date(); 
    next(); 
}); 
Смежные вопросы