我现在正在学习nodeJS,所以我做了这个教程(http://scotch.io/tutorials/javascript/creating-a-single-page-todo-app-with-node-and-angular),现在我想为每个待办事项添加时间戳。
我使用moment.js
创建一个简单文件(time.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}
....
这里我得到了我的服务器启动时间,而不是我发布的时间(这就是我需要的)
这里出了
"time": "February 21st 2014, 12:00:40 pm",
"time": "February 21st 2014, 12:00:40 pm",
"time": "February 21st 2014, 12:00:40 pm",
...
如何获得每个请求的当前时间?
答案 0 :(得分:2)
有一个mongoose模式为您处理默认值的函数。这些默认值可以计算出来。在这个例子中,实现你在这里要求的正确和简单的方法如下
new Schema({
date: { type: Date, default: Date.now }
})
当您保存对象时,您不再需要指定“日期”字段,mongoose会照顾它!
Mongoose Docs:http://mongoosejs.com/docs/2.7.x/docs/defaults.html(旧) http://mongoosejs.com/docs/schematypes.html(当前版本)
答案 1 :(得分:0)
为什么要完成所有额外的工作,而不是将模式中的时间字段定义为Date类型并使用中间件来设置?
var todoSchema = mongoose.Schema({
time: Date
});
todoSchema.pre('save', function (next) {
if (!this.isNew) next();
this.time = new Date();
next();
});