架构:
var schema = new Schema({...}, {
timestamps: true,
id: false,
toJSON: {
virtuals: true,
},
toObject: {
virtual: true,
}
});
schema.virtual('updated').get(function () {
if(typeof this.updatedAt === "undefined" && typeof this.createdAt === "undefined") return "";
var updated = (typeof this.updatedAt === "undefined") ? this.createdAt : this.updatedAt;
return "Updated "+moment(updated).fromNow();
});
此代码最近在工作-针对特定实例的updatedAt将于8月24日发布,但是对文档的任何新编辑都不会更新时间戳。
感觉我在这里错过了一些非常愚蠢的东西。
最佳答案
偶然发现同一件事,发现如果在使用updatedAt
(或findOneAndUpdate()
)更新对象时在我的对象上设置了update()
属性,它将不会对其进行更新。
就我而言,请确保在更新之前未设置updatedAt
来解决此问题:
delete thing.updatedAt;
Thing.findOneAndUpdate(
{ _id : thing._id },
thing,
function (err, result) {
…
Credit to Valeri Karpov for his answer on Github.
关于node.js - MongoDB/ Mongoose 时间戳未更新,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39495671/