我的 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 }, // 出生日期
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/