【问题标题】:MongoError: E11000 duplicate key error collection: orders.events index: _id_ dup key: { _id: ObjectId('608e6a80931b45001aa7f910') }MongoError:E11000 重复键错误集合:orders.events 索引:_id_ dup 键:{ _id: ObjectId('608e6a80931b45001aa7f910') }
【发布时间】:2021-07-25 01:00:31
【问题描述】:

所以实际上我得到了这个错误。 我有 2 个模型:一个用于事件,另一个用于订单,我首先将事件实例从一条路线和其他路线存储在数据库中,当我找到它并按顺序引用它并尝试保存它然后出现以下错误

MongoError: E11000 duplicate key error collection: orders.events index: _id_ dup key: { _id: ObjectId('608e6bde6ae9e80019f01dfe') }
[orders]     at Function.create (/app/node_modules/mongodb/lib/core/error.js:57:12)
[orders]     at toError (/app/node_modules/mongodb/lib/utils.js:123:22)
[orders]     at /app/node_modules/mongodb/lib/operations/common_functions.js:258:39
[orders]     at handler (/app/node_modules/mongodb/lib/core/sdam/topology.js:944:24)
[orders]     at /app/node_modules/mongodb/lib/cmap/connection_pool.js:350:13
[orders]     at handleOperationResult (/app/node_modules/mongodb/lib/core/sdam/server.js:558:5)
[orders]     at MessageStream.messageHandler (/app/node_modules/mongodb/lib/cmap/connection.js:277:5)
[orders]     at MessageStream.emit (node:events:369:20)
[orders]     at processIncomingData (/app/node_modules/mongodb/lib/cmap/message_stream.js:144:12)
[orders]     at MessageStream._write (/app/node_modules/mongodb/lib/cmap/message_stream.js:42:5)
[orders]     at writeOrBuffer (node:internal/streams/writable:395:12)
[orders]     at MessageStream.Writable.write (node:internal/streams/writable:340:10)
[orders]     at Socket.ondata (node:internal/streams/readable:750:22)
[orders]     at Socket.emit (node:events:369:20)
[orders]     at addChunk (node:internal/streams/readable:313:12)
[orders]     at readableAddChunk (node:internal/streams/readable:288:9)
[orders] [ERROR] 09:09:09 MongoError: E11000 duplicate key error collection: orders.events index: _id_ dup key: { _id: ObjectId('608e6bde6ae9e80019f01dfe') }

我的事件和订单架构如下:

事件:

const eventSchema = new mongoose.Schema({
    date: {
        type: mongoose.Schema.Types.Date,
        required: true
    },
    price: {
        type: Number,
        required: true
    },
    name: {
        type: String,
        required: true
    },
    creatorId: {
        type: String,
        required: true
    }  
});

订单:

const orderSchema = new mongoose.Schema({
    userId: {
        type: String,
        required: true
    },
    event: {
        type: mongoose.Schema.Types.ObjectId,
        ref: 'Event'
    }   
});

我的代码如下:

const event = await Event.findById(eventId);

if (!event) {
        throw new NotFoundError();
    }

const order = Order.build({
        userId: req.currentUser!.id,
        event
})

order.save();

我已经在数据库中存储了事件文档,我可以通过查找它来参考。

【问题讨论】:

    标签: javascript node.js typescript mongodb mongoose


    【解决方案1】:

    请尝试删除数据库一次,然后尝试添加新文档。 正如您从订单集合中引用的事件键一样。

    【讨论】:

      猜你喜欢
      • 2019-09-10
      • 2021-10-01
      • 2021-09-02
      • 2018-07-29
      • 2019-01-05
      • 2020-05-11
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多