it-swarm.com.de

Mungo - verursacht durch :: 11000 E11000 doppelter Schlüsselfehlerindex

Warum erhalte ich diesen doppelten Fehler - Error creating new user: WriteError({"code":11000,"index":0,"errmsg":"insertDocument :: caused by :: 11000 E11000 duplicate key error index?

Alle zur Verfügung gestellten Felder sind überhaupt nicht leer.

Schema:

// Declare schema
var userSchema = new mongoose.Schema({
    username: {type: String, required: true, index: {unique: true}},
    password: {type: String, required: true},
    created_on: {type: Date, default: Date.now}
});

Post:

// Create - POST
// Create the first method of the API : POST used to create a new user.
router.post("/", function(req, res, next) {
    // Get values from POST request
    var username = req.body.username;
    var password = req.body.password;
    console.log(req.body); // { username: 'tealou', password: 'test123' }

    // Create new user document
    User.create({
        username: username,
        password: password
    }, function(err, user) {
        console.log(user); // undefined
        if (err) {
            console.log("Error creating new user: " + err);
            res.send("Error creating new user.");
        } else {
            console.log("POST creating new user: " + username);
            res.json(user);
        }
    })
});

Error:

Fehler beim Erstellen eines neuen Benutzers: WriteError ({"code": 11000, "index": 0, "errmsg": "insertDocument :: verursacht By :: 11000 E11000 Fehlercode für doppelten Schlüssel: iotdb.users. $ Name_1 dup : null } "," op ": {" username ":" tealou "," password ":" $ 2a $ 10 $ 7mPGND2FRuJDGnXaVTnkru2.xsGn2Ksf8veBKur4ouD9VUNj60RaC "," _ id ":" 07-13T08: 55: 28.279Z "," __ v ": 0}})

irgendwelche Ideen?

9
laukok

Sie hatten anfangs ein Feld namens name in Ihrem Schema, das auf unique gesetzt war.

Wie soll ich wissen? Wegen des Fehlers, der mir so sagt:

duplicate key error index: **iotdb.users.$name_1**

Sie haben das Feld in username umbenannt, den alten Index jedoch nicht entfernt. Standardmäßig setzt MongoDB in diesem Fall den Wert eines nicht vorhandenen Feldes auf null.

Relevante Dokumentation hier :

Wenn ein Dokument keinen Wert für das indizierte Feld in einem eindeutigen Index enthält, speichert der Index einen Nullwert für dieses Dokument. Aufgrund der eindeutigen Einschränkung lässt MongoDB nur ein Dokument zu, dem das indizierte Feld fehlt.

Um dieses Problem zu lösen, müssen Sie den Index für das umbenannte Feld name entfernen.

24
robertklep

Das Löschen der Sammlung und das Wiederherstellen des Codes durch meinen Code hat für mich funktioniert.

1
Janac Meena