我有一个猫鼬模式:
'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。
我不喜欢通过在服务上添加逻辑来解决这个问题,我可以通过定义模式来解决它吗?
答案 0 :(得分:0)
是的,你可以!实际上,这是一个常见的问题,有几个插件可以帮到你,我的推荐是: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
});