首页 > 解决方案 > Mongoose insertMany - 缺少 createdAt

问题描述

我在我的节点微服务应用程序中使用猫鼬。

我有一个自动创建的带有“createdAt”的模型:

const mongoose = require('mongoose');

const recordSchema = new mongoose.Schema({
    source: {
        type: String,
        required: true,
        trim: true,
        lowercase: true
    },
    coin: {
        type: String,
        required: true,
        trim: true,
        lowercase: true
    },
    rate: {
        type: Number,
        required: true
    },
    isError: {
        type: Boolean,
        required: true
    },
}, { timestamps: { createdAt: 'created_at' } });

module.exports = mongoose.model('Record', recordSchema);

我尝试在其中插入大量文档,如下所示:

// Save the fetched data into the database.
const saveCoinsData = (coinsData) => {
    RecordModel.collection.insertMany(coinsData, (err) => {
        if (err) { logger.error(err); }
    });
};

出于某种原因,如果我插入单个文档,则会按预期创建“createdAt”。但是如果我使用 insertMany 函数,它就不起作用,并且不会创建“createdAt”(或 created_at)。

这是正常的吗?
这是猫鼬中的错误吗?

标签: javascriptnode.jsmongodbmongoose

解决方案


您在这里没有使用猫鼬模式。您通过使用 [schema].collection.[method] 来使用默认节点驱动程序。参考这一点,您可以 RecordModel.insertMany改用它,它应该添加时间戳。


推荐阅读