首页 > 解决方案 > 如何获取 createAt 对象?

问题描述

我现在正在使用 node js 构建一个简单的网站。
但是,在创建过程中,没有输出文档中的对象。下面的代码是一个简单的模式。

// model/Post.js

const PostSchema = new Schema({
    title: String,
    body: String,
    createdAt: {
        type: Date,
        default: Date.now
    },
    updatedAt: Date
});
// routes/posts.js

const express = require('express');
const app = express.Router();
const Post = require('../models/Post');

router.get('/', function(req, res){
    const query = Post.find({});
    query.select('-createdAt');
    query.exec(function(err, posts){
        if (err) return console.error(err);
        res.render('posts/index', { posts: posts });
    });
});

我想在 postSchema 中加载 createdAt 并在 html 中打印,我该怎么办?
下面是部分html代码。

<!-- views/posts/index.ejs -->

<% posts.forEach(post => { %>
<tr>
  <td>
    <a class="nav-link" href="/posts"><div class="ellipsis"><%= post.title %></div></a>
  </td>
  <td><%= post.createdAt %></td> <!-- I want to print createdAt -->
</tr>
<% }) %>

我正在使用包 express、ejs、mongoose

如何打印 createdAt 对象?

标签: javascripthtmlnode.jsmongoose

解决方案


在您的代码中删除 query.select('-createdAt') ,基本上它会在结果中删除 createdAt ,并且您将从模式中获取所有其他属性。

router.get('/', function(req, res){
    const query = Post.find({});
    query.exec(function(err, posts){
        if (err) return console.error(err);
        res.render('posts/index', { posts: posts });
    });
});

推荐阅读