本文转自:http://www.cnblogs.com/jaxu/p/5595451.html

在Node.js中使用MongoDB少不了Mongoose。假设有如下Mongoose Schemas的定义:

var ItemSchema = new mongoose.Schema({
biz: String,
name: String,
tradeType: String,
totalFee: Number,
transactionId: String,
createTime: {
type: Date,
default: Date.now
},
updateTime: {
type: Date,
default: Date.now
}
}, {
versionKey: false
});

我们希望在保存model数据时不用指定createTime字段的值,按照上述Schema的定义,createTime会自动保存为系统当前时间。当然,在更新model数据时updateTime字段的值也能自动保存为系统当前时间。但是这里有两个问题:

  1. Schema定义中含有default属性的字段在创建新文档时会自动生成值,但是如果数据库中缺少该字段,读取数据时也会自动生成值。例如上述schema所定义的表中先前保存进去的文档如果没有createTime字段,则读取数据时createTime字段的值默认都是系统当前时间。这显示不科学。

  2. 我们并不能做到在每次更新文档时自动更新updateTime字段的值,所以这里给updateTime字段设置default属性有点多余。

  那如何才能在schema定义中让MongoDB自动生成和管理createTimeupdateTime字段的值呢?答案是使用timestamps选项。有关timestamps选项的作用可以看官方文档的解释http://mongoosejs.com/docs/guide.html#timestamps

  我们将上述Schema的定义修改如下:

var ItemSchema = new mongoose.Schema({
biz: String,
name: String,
tradeType: String,
totalFee: Number,
transactionId: String,
createTime: {
type: Date,
default: Date.now
},
updateTime: {
type: Date,
default: Date.now
}
}, {
versionKey: false,
timestamps: { createdAt: 'createTime', updatedAt: 'updateTime' }
});

添加了高亮显示的部分。timestamps选项会在创建文档时自动生成createAtupdateAt两个字段,值都为系统当前时间。并且在更新文档时自动更新updateAt字段的值为系统当前时间。如果想自定义这两个字段的名称,则可以使用上述高亮部分的定义方法。如果使用默认的字段名,则使用下面的定义方法即可:

timestamps: true

在Mongoose中,定义数据库model schemas时使用timestamps选项可以给我们带来许多便利。在创建文档时不用在代码中去指定createTime字段的值,在更新文档时也不用去修改updateTime字段的值。

最新文章

  1. 返水bug-备用
  2. linux Centos下搭建gitolite服务器
  3. window 常用软件
  4. c#创建、安装、卸载、调试windows服务的简单事例
  5. 【iOS】利用Runtime特性做监控
  6. json一些特点
  7. uva 260 - Il Gioco dell'X
  8. STM32开发指南-按键输入实验
  9. JAVA入门[1]--安装JDK
  10. echarts——各个配置项详细说明总结
  11. os与sys模块
  12. HDU 2086 A1 = ? (找规律推导公式 + 水题)(Java版)
  13. 理解 vue-router的beforeEach无限循环的问题
  14. ISP PIPLINE (一) BLC 以及 线性化
  15. BZOJ5057 : 区间k小值5
  16. nodejs框架对比
  17. 【impala学习之二】impala 使用
  18. getopts的使用方法
  19. cin和cout详解
  20. java代码,实现输入编号,输出对应水果的单价~~~~

热门文章

  1. c#接口和抽象类对比学习
  2. hdu.5202.Rikka with string(贪心)
  3. 淘宝(阿里百川)手机客户端开发日记第六篇 Service详解(四)
  4. [Effective JavaScript 笔记]第19条:熟练掌握高阶函数
  5. [OpenJudge 3061]Flip The Card
  6. WinAPI: ExtCreateRegion - 区域变换
  7. 异常详细信息: System.Data.SqlClient.SqlException:用户 'IIS APPPOOL\DefaultAppPool' 登录失败解决办法
  8. 常州Day4题解
  9. 【SpringMVC】SpringMVC系列14之SpringMVC国际化
  10. MST:Conscription(POJ 3723)