Ошибка дублированного ключа Mongoose во вложенной схеме - PullRequest
0 голосов
/ 16 сентября 2018

В настоящее время у меня есть следующая схема:

    const mongoose = require('mongoose');
    const Schema = mongoose.Schema;
    
    const Comments = new Schema({
        authorId: {
            type: Schema.Types.ObjectId,
            unique: false
        },
        commentBody: {
            type: String
        }
    });
    
    //Create schema
    const GroupSchema = new Schema({
        name:{
            type: String,
            required: true
        },
        comments: [Comments]
    });
    
    module.exports = Group = mongoose.model('group', GroupSchema);

Я могу вставить первую группу без ошибок, но как только я пытаюсь добавить вторую, я получаю эту ошибку:

{
    "error": {
        "name": "MongoError",
        "message": "E11000 duplicate key error collection: app-idiomas.groups index: comments.authorId_1 dup key: { : null }",
        "driver": true,
        "index": 0,
        "code": 11000,
        "errmsg": "E11000 duplicate key error collection: app-idiomas.groups index: comments.authorId_1 dup key: { : null }"
    }
}

Итак, как я полагаю, проблема со схемой «Комментарии», и я искал вложенную схему, чтобы посмотреть, смогу ли я решить эту проблему. Я пытался использовать атрибуты "default" и "sparse", но безуспешно.

Наконец, я решил сделать тест и удалить схему комментариев, а также ссылку на нее в схеме групп, просто чтобы убедиться, что все в порядке. Я удалил всю свою базу данных и добавил первую группу (теперь без каких-либо атрибутов комментариев), и все равно получаю сообщение об ошибке всякий раз, когда пытаюсь добавить вторую. Я просто не знаю почему.

Любая помощь?

UPDATE

У меня не было времени в эти последние дни, но, наконец, я обнаружил, в чем проблема. Вероятно, когда я создавал схему комментариев, я мог установить для authorId уникальность, и из-за этого MongoDB создал индекс для этого атрибута. Я не знаю много о MongoDB, и поэтому я не проверял раньше. Но вот где я нашел индекс и удалил его:

Расположение вкладки "индексы" в MongoDB

1 Ответ

0 голосов
/ 16 сентября 2018

Эта проблема должна быть с записью в базе данных.
Но, как вы сказали, вы очистили базу данных, проблема выглядит странно.
Просто проверьте в другой раз, удалили ли вы правильную базу данных, т.е. ту, которую вы используете в своем API.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...