mongoose schemaType的get:方法 , 再取数据时,方法没有起到作用

domain.js 代码如下

var mongoose = require('mongoose')
var moment = require('moment')
var Schema = mongoose.Schema
function dateformat(val) {
    console.log('dateformat' + val);//这里的调试都没有执行

    return moment(val).format('YYYY-MM-DD');
}
var schema = new Schema({
    id: Number,
    domain: String,
    title: {
        type: String
    },
    keyword: String,
    describe: String,
    date: {
        type: Date,
        default: Date.now,
        get: dateformat //这里想在get数据的时候,调用dateformat()方法,格式化日期
    }
})
module.exports = schema

express.js代码如下

var express = require('express');
var domains = require('../../models/domains')//导入models ,schema为上面的domain.js
var router = express.Router();
var info = {}
router.get('/domain', async (req, res) => {
  var domaindb
  where = {}
  domaindb = domains.findOne(where).exec()
  domaindb = await domaindb
  
  console.log(domaindb)//调试出来的domaindb,date没有被日期格式化,求大佬帮助.不知道是哪步错了
  if (domaindb) {
    info.code = 0
    info.message = domaindb
  } else {
    info.code = -1
    info.message = '加载失败'
  }
  return res.json(info);
});
阅读 3.8k
2 个回答

找到解决办法了, 谢谢大家
最后改成这样就行了

date: {
    type: Date,
    default: Date.now,
    get(val){
        return moment(val).format('YYYY-MM-DD HH:mm:ss');
    }
}
新手上路,请多包涵

一定要写这一句,在转JSON时才能调用get方法
schema.set('toJSON', { getters: true });

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏