mongoose,如何在子文档中loggingupdate_time

我有一个mongoose模式是:

这是我的mongoose模式

'use strict'; module.exports = app => { const mongoose = app.mongoose; const custSchema = new mongoose.Schema({ belong: { // 所属信息 user_id: { type: 'String', required: true }, type: { type: 'Number', required: true }, // bee、4s店、平台 username: { type: 'String', required: true }, // 用户名 }, delete: { type: Number, default: 0 }, info: { // 客户基本信息 name: { type: 'String', required: true }, // 客户姓名 brith: { type: 'Date', required: true }, // 出生date sex: { type: 'Number', required: true }, // 性别 eduction: Number, // 学历 level: { type: 'Number', required: true }, // 客户等级 tag: Number, // 客户标签 tel: { type: 'Number', required: true }, // 电话 family: { // 家庭信息 situation: Number, // 家庭types earning: Number, // 家庭总收入 location: { // 家庭住址 province: Number, // 省 city: Number, // 市县 region: Number, // 区镇 addr: String, // 具体地址 }, }, job: { // 工作信息 industry: Number, // 行业 company: String, // 公司 occupation: String, // 职位 earning: Number, // 收入 location: { // 公司地址 province: Number, // 省 city: Number, // 市县 region: Number, // 区镇 addr: String, // 具体地址 }, }, comment: String, // 备注 update_time: { type: 'Date', required: false }, // 数据更新时间 }, ... other code 

当我更新'custSchema.info'中的字段时如何保存update_time?

比如:我想更新'info.name',之后,'cust.schema.info'中的update_time将被包含。

我不喜欢通过在服务上添加逻辑来解决这个问题,我可以通过定义模式来解决这个问题吗?

是的你可以! 其实这是一个普遍的问题,有几个插件可以帮助你,我的build议是:mongoose时间戳。

https://github.com/drudge/mongoose-timestamp

这是非常简单的,一个单一的文件,你可以在集成到你之前直接在Github上直接阅读它。

然后,您可以使用时间戳如下:

 User.findOneAndUpdate({username: 'Prince'}, { password: 'goatcheese' }, { new: true, upsert: true }) .exec(function (err, updated) { console.log(user.updatedAt); // Should be approximately createdAt + 1 second console.log(user.createdAt < user.updatedAt); // true });