Сбор дубликатов ошибок ключа в MongoDB, когда уникальность не включена - PullRequest
0 голосов
/ 05 марта 2020

Итак, я работал над этим приложением для голосования, используя Node, Express и Mon goose. Я создал эту модель Schema VoteCasting. js

const mongoose = require('mongoose');
const ballot = new mongoose.Schema({
        ballotFirstName:{
            type:String  
        },

        ballotLastName:{
            type:String
        },

        voteCasted:{
            type:Array,
        }
    })

module.exports=mongoose.model('Ballot',ballot)

Notice voiceCasted ключ НЕ УНИКАЛЬНЫЙ. Файл e js имеет следующий вид:

<label>Vote for Candidate 1</label>
<input type="radio" id='one' name="ballot" value='A'>
<div><h2>Candidate 2</h2></div>
<label>Vote for Candidate 2</label>
<input type="radio" id='two' name="ballot" value='B'>
<button type="submit">Vote</button>

Моя схема состоит в том, чтобы иметь ключ voiceCasted, принимающий либо A, либо B за голос каждого пользователя. Вообще говоря, имеет смысл иметь несколько пользователей, голосующих одинаково. Тем не менее, в моем приложении после того, как пользователь 1 проголосовал за A, если пользователь 2 проголосовал за A, я вижу MongoError: E11000 коллекция ошибок дублированного ключа: library.ballots index: voiceCasted_1 dup ключ: {voiceCasted: "A"} в Function.create в командной строке терминала.

Ниже приведено то, что передается в запрос на публикацию

router.post('/loggedin/testing',async (req,res)=>{
    const filledBallot = new BallotBox({
        ballotFirstName:newVoter.firstName, //disregard this line for this question
        ballotLastName:newVoter.lastName, //disregard this line for this question
        voteCasted:req.body.ballot
        })

Почему у меня возникает ошибка дублирования, когда уникальный даже не определен? Как я решу это? Спасибо

1 Ответ

0 голосов
/ 06 марта 2020

ПРОБЛЕМА РЕШЕНА. Таким образом, всякий раз, когда вы сталкиваетесь с чем-то подобным, есть вероятность, что вы, вероятно, изменили что-то в Схеме (например, категорию, типы данных, обязательный / необязательный ключ и т. Д. c.) после настройки базы данных . Меры предосторожности, о которых нам следует знать, это то, что, как только мы изменим что-то в схеме, нам нужно удалить существующую базу данных в mon go shell

>use nameOftheDatabaseYouCreated
switched to nameOftheDatabaseYouCreated
>db.dropDatabase()

и затем перезапустить базу данных.

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