使用猫鼬时间戳记选项不会创建属性

时间:2018-08-09 21:59:42

标签: mongodb mongoose timestamp robo3t

我可能缺少明显的东西,但是已经阅读了docs。我有一个现有的收藏集。我使用Robo3T删除了它。在我的脚本中,用尽了Node,我定义了添加时间戳的架构选项,如下所示。我运行我的应用程序。集合被创建。但是,当我通过Robo查看时,没有时间戳记。其他一切都如我所料。索引已创建。字段被填充。

我期望另外两个属性:createdAt和updatedAt。

我正在使用猫鼬5.2.7。

    const categorySchema = mongoose.Schema(
        {
            value: String,
            recordName: String,
            sourceId: Number,
            targetId: Number,
            requestParameters: Object,
            magentoResponse: Object
        },
        {
            autoIndex: true
        }, 
        {
            timestamps: true
        }
    );

    categorySchema.index({sourceId: 1}, {unique: true});
    categorySchema.index({targetId: 1, recordName: 1}, {unique: true});

2 个答案:

答案 0 :(得分:1)

哦!我是个白痴。 autoIndex和时间戳应该在同一块中。我是个白痴!

应该是:

const categorySchema = mongoose.Schema(
    {
        value: String,
        recordName: String,
        sourceId: Number,
        targetId: Number,
        requestParameters: Object,
        magentoResponse: Object
    },
    {
        autoIndex: true,
        timestamps: true
    }
);

categorySchema.index({sourceId: 1}, {unique: true});
categorySchema.index({targetId: 1, recordName: 1}, {unique: true});

答案 1 :(得分:0)

您是如何重新创建这些记录的?如果他们不使用猫鼬(而是通过mongoDB client / cli),那么他们将没有这些字段。这些是mongoose specific

并在创建新模型并保存时创建:

var thingSchema = new Schema({..}, { timestamps: { createdAt: 'created_at' } });
var Thing = mongoose.model('Thing', thingSchema);
var thing = new Thing();
thing.save(); // `created_at` & `updatedAt` will be included