【问题标题】:Timestamp with nodejs and mongoose带有nodejs和猫鼬的时间戳
【发布时间】:2014-02-21 17:03:12
【问题描述】:

我现在正在学习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",
...

如何获取每个请求的当前时间?

【问题讨论】:

    标签: javascript node.js time mongoose momentjs


    【解决方案1】:

    猫鼬模式为您公开了一个处理默认值的函数。这些默认值可以计算出来。在这个例子中,实现你在这里问的正确和简单的方法如下

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

    保存对象时,不再需要指定“日期”字段,猫鼬会处理它!

    Mongoose 文档:http://mongoosejs.com/docs/2.7.x/docs/defaults.html(旧) http://mongoosejs.com/docs/schematypes.html(当前版本)

    【讨论】:

      【解决方案2】:

      为什么要完成所有额外的工作,而不是将架构中的时间字段定义为 Date 类型并使用中间件进行设置?

      var todoSchema = mongoose.Schema({
        time: Date
      });
      
      todoSchema.pre('save', function (next) {
        if (!this.isNew) next();
        this.time = new Date();
        next();
      });
      

      【讨论】:

        猜你喜欢
        • 2017-09-04
        • 1970-01-01
        • 1970-01-01
        • 2021-06-01
        • 2019-04-08
        • 1970-01-01
        • 2020-08-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多