node.js - mongoose,如何在子文档中记录 update_time

标签 node.js mongodb mongoose schema

我的 Mongoose 架构是:

this is my mongoose schema

'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 }, // 出生日期
    sex: { type: 'Number', required: true }, // 性别
    eduction: Number, // 学历
    level: { type: 'Number', required: true }, // 客户等级
    tag: Number, // 客户标签
    tel: { type: 'Number', required: true }, // 电话
    family: { // 家庭信息
      situation: Number, // 家庭类型
      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。

我不喜欢通过在 Service 上添加逻辑来解决这个问题,我可以通过定义 schema 来解决它吗?

最佳答案

是的,你可以!其实,这是一个常见的问题,有几个插件可以帮助你,我的推荐是:Mongoose Timestamp。

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

很简单,一个文件,你可以在集成到你的项目之前实际阅读它 directly on 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
        });

关于node.js - mongoose,如何在子文档中记录 update_time,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46029098/

相关文章:

node.js - Mongoose 首先按一个属性排序和限制,然后按另一个属性排序

node.js - Mongoose/MongoDB 获取一天内浏览次数最多的文章分组

node.js - NPM Run Build 始终构建生产而不是开发

mongodb - 生成聚合结构

node.js - 尝试登录用户时,用户 ID 返回为 "undefined"

mongodb - 如何限制 MongoDB 的更新脚本?

shell - 通过 id 从 Mongo 中删除旧文档

javascript - 哈皮 : How to send image

javascript - React 语法不起作用

php - Node.js - 连接到 MySQL 数据库服务器