(moment.js)格式从mongo检索的日期

时间:2016-02-02 22:00:44

标签: javascript node.js mongodb mongoose momentjs

有没有办法在我检索它们之后格式化存储在mongoDB中的日期对象?

我尝试(已更新)

tests.find({}, {roomId: 1, teacher: 1, created: 1}, function(err, result) {
            if (err) {console.log(err);}
            result = result.map(function (doc) {
                console.dir(typeof doc.created);
                console.dir(doc.created);
                doc.created = doc.created.format("MM.DD.YYYY");
                return doc;
            });

            res.render('showTests', {tests: result});
        });

cannot read property 'format' of undefined (这很奇怪,因为在玉中

each test in tests
    p.col-md-3 #{test.roomId}
    p.col-md-3 #{test.teacher}
    p.col-md-3 #{test.created}

正确打印日期"" (作为一英里长的字符串)。)

我也尝试直接在玉器中添加格式,但这也不起作用。

我必须存储已经格式化的吗?那不是唯一的解决方案吗?

控制台输出(已更新)

'object'
Tue Feb 02 2016 20:58:36 GMT+0100 (Mitteleuropäische Zeit)
f:\Dropbox\Projects\calc\routes\test.js:47
                doc.created = doc.created.format("MM.DD.YYYY");
                                          ^

TypeError: doc.created.format is not a function

如果我注释掉.format()行,它会工作并在模板中显示日期

这里是我如何生成日期(更新):

var testResults = {

    addRoom: function(Id, teacher) {  // room pseudoconstructor

        this[Id] = {

            Id: Id,
            teacher: teacher,
            created: moment(),
            // ...

        }
}


    // ...
    var created = testResults[room].created;
    var students = testResults[room].students;
    var problems = testResults[room].testProblems;

 // save to DB
            var test = new tests({
                roomId      : room,
                created     : created,
                teacher     : name,
                students    : students,
                problems    : problems
            });

            test.save(function(err, result) {
                if (err) {console.log(err);}
                else {
                    console.log('test saved to DB');
                    socket.emit('testSaved');
                }
            });

答案:

https://coderwall.com/p/egh53a/making-use-of-utility-libraries-in-server-side-jade-templates

1 个答案:

答案 0 :(得分:-1)

您正在尝试格式化文档集合。 您必须循环搜索结果,然后在将每个文档传递给模板之前对其进行格式化。

e.g。

var moment = require('moment');
result = result.map(function (doc) {
    doc.created = moment(doc.created).format("DD.MM. h:mm");
    return doc;
});