在创建时为每个 MongoDB 项目添加日期()/时间戳

Adding a date()/timestamp to each MongoDB item upon creation

这是我今天关于 Node.js 的第二个问题。时间不早了,希望大家帮我在睡觉前快速集成这个功能

我有一个小型问答应用程序,我可以在其中读取和写入数据 from/to Mongo我的视图页面上的数据库。

但是,我想在写入 MongoDB 的每个项目实例中注册一个时间戳或 date()。

在视图中,目前只有作者、标题和文本 body 必须可见。但是当我查询 Mongo 时,我想要一个单独的 属性 来列出创建的日期和时间。 (只有日期就够了)

我在我的架构中定义了一个 属性 "date" :日期。我以为它会自动添加这个,但只添加了标题、作者和 body。我认为这是因为它们在讨论的路线中被定义为 vals 但我确定。

这些是我的代码文件:

discussions.js -- /路线

    var mongoose = require('mongoose');
var express = require('express');
var router = express.Router();
var Discussion = require('../models/discussions');

router.get('/', function(req, res, next){

    // alle db records uitlussen, op render alldiscussions
    var db = req.db;
    Discussion.find({},{},function(e,docs){
        res.render('all_discussions', {
            "all_discussions" : docs
        });
        console.log(docs);
    });
});

router.get('/create', function(req, res, next){
    res.render('add_discussion', {title: 'Diskussr'});

});

router.post('/submit', function(req, res) {

    //set DB
    var db = req.db;

    //form vals
    var author = req.body.name;
    var title = req.body.title;
    var body = req.body.body;

    //set collection
    var collection = db.get('discussions');

    //insert
    collection.insert({
        "author" : author,
        "title" : title,
        "body" : body
    }, function (err, doc) {
        if (err) {
            res.send("Database submit error");
        }
        else {
            res.location("all_discussions");
            res.redirect("all_discussions");
        }
    });

});

module.exports = router;

add_discussion.jade -- /views

extends layout

block content
  h1 Start a discussion
  p Start a discussion here on #{title} and help eachother out.
  p Voeg hier uw vraag in:
  form(action="/submit" method="post" name="submit_discussion")
  input(id="name", placeholder="Your name" name="name")
  br
  br
  input(id="title", placeholder="Brief summary of your problem." name="title")
  br
  br
  input(id="body", placeholder="Explain your problem." name="body")
  br
  br
  button(type="sumbit" id="submit" value="submit") Submit
  br

discussions.js -- /模型

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

//schema discussions
var DiscussionSchema = new Schema({
    author: String,
    title: String,
    body: String,
    category: String,
    created: Date
},
{ collection : 'discussions' });

// model
var Discussion = mongoose.model('Discussion', DiscussionSchema, 'discussions');

// test functie: aanmaken vraag on load
// var firstDiscussion = new Discussion({author: "Testuser 1", title: "Testvraag via models"});
// console.log(firstDiscussion);

// //vraag saven
//  firstDiscussion.save(function (err, firstDiscussion){
//      if (err) return console.error(err);
//  });





module.exports = Discussion;

只需为 created 字段添加一个默认值:

//schema discussions
var DiscussionSchema = new Schema({
    author: String,
    title: String,
    body: String,
    category: String,
    created: { type: Date, default: Date.now }
},
{ collection : 'discussions' });

或者,由于您使用 ObjectId 作为主键,您可以按照@adeneo 的建议使用 getTimestamp() 提取时间戳:

Discussion.find({}, function(e,docs){
    docs.forEach(function(doc) {
        console.log("created: " + doc._id.getTimestamp());
    });
});