猫鼬模式如何更改日期。现在每当数据库更新

时间:2019-01-27 10:41:56

标签: node.js mongodb express mongoose

每当数据库数据更新时,如何更改updated_at的值

将其视为我的猫鼬模式

const mongoose = require('mongoose')

const locationDataSchema = new mongoose.Schema({
    locationName: String,
    location: [{
        lat: Number,
        lng: Number
    }],
    news: [ {
        author: String, //or number
        title: String,
        description: String,
        url: String,
        urlToImage: String
    }],
    updated_at: {
        type: Date,
        default:  Date.now
    }
})

从我对猫鼬文档的模糊阅读中,我做了类似的事情

locationDataSchema.post('save', (next) => {
    console.log("here")
    this.locationName = this.locationName.toLowerCase();
    this.updated_at = Date.now()
 })

但是,每当我在猫鼬模式中创建/更新某些内容时,都不会调用此方法

问题:有人可以帮助我弄清楚如何改变

updated_at = Date.now()

每当用户更新数据库中的数据时(将位置名称更改为小写)

1 个答案:

答案 0 :(得分:2)

当前版本的Mongoose(v4.x)具有时间戳,作为模式的内置选项:

var mySchema = new mongoose.Schema( {name: String}, {timestamps: true} );

此选项添加了带有日期时间戳的createdAt和updatedAt属性,这些属性可以为您完成所有工作。 有关更多信息,请查看

https://mongoosejs.com/docs/guide.html#timestamps