2017-12-19 24 views
0

Dienst, der mit Konten verwaltet, hat eine Route zum Hinzufügen eines neuen Kontos. Offensichtlich sollte E-Mail-Feld im Konto eindeutig sein. Ich möchte App, um Fehler zu jeder Zeit zu werfen, wenn Matches gegründet.Wie erstellt man einen eindeutigen Index in MongoDB?

In diesem Moment es über manuell realisiert wird funktionieren:

const { createError } = require('micro') 

const createAccount = async (collection, credentials) => { 
    const { email } = credentials 
    const account = await collection.findOne({ email }) 
    if (account) { 
    throw createError(401, 'this email is already used') 
    } 
    collection.insertOne({ email }) 
} 

module.exports = createAccount 

Als ich Mungo verwenden es mit dem Hinzufügen von eindeutigem Index keine Probleme. Diesmal wurde der native mongoDB-Treiber verwendet. Laut Dokumentation habe ich versucht, so etwas wie hinzufügen:

collection.createIndex({ email: 1 }, { unique: true }) 

Und in der Tat, es erstellt wirklich einen Index, kann ich es in meinem MLab Hause sehen: https://gyazo.com/8f0e36a3134154acde0b77cf2ade61a6

Vielleicht habe ich veraltete Syntax oder etwas wie das? Warum hat key eindeutig false?

+0

Versuchen Sie, den vorhandenen Index von Mongo zu entfernen und dann den Code erneut auszuführen. – VtoCorleone

+0

@VtoCorleone hat Recht. Dieser Index könnte bereits existiert haben. Möglicherweise müssen Sie sie löschen und neu erstellen. –

+0

Yeap, ich habe das versucht. In jedem Fall ist der Index eindeutig auf false gesetzt. Sieht aus wie ein Problem mit Optionen: erwarten collection.createIndex ({email: 1}, {unique: true}) Weil Index erstellt, aber es gibt keine eindeutige. –

Antwort

0

Sie haben ensureIndex

collection.ensureIndex(option, response){ 
// here call you fucntion 
} 

ensureIndex Methode Index bereits, wenn nicht wird es schaffen verwenden.

+1

secureIndex ist veraltet: https://docs.mongodb.com/manual/reference/method/db.collection.ensureIndex/ –

+0

@ SelloMkantjwa danke für die Aktualisierung der Informationen –

Verwandte Themen