架构:

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/

10-09 20:22