アカウントを処理するサービスには、新しいアカウントを追加するためのルートがあります。明らかに、アカウントの電子メールフィールドは一意でなければなりません。 マッチが設立されたときにいつでもアプリがエラーをスローするようにします。mongoDBでユニークなインデックスを作成する方法は?
この時点で、それは手動機能によって実現されている:私はマングースを使用する場合は一意のインデックスを追加することに問題は
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
ありませんでした。今回は、mongoDBのネイティブドライバが使用されました。 よるドキュメントは、私のような何かを追加しようとしました:
collection.createIndex({ email: 1 }, { unique: true })
そして実際に、それは本当に、私は私のMLABホームでそれを見ることができ、インデックスを作成しました: https://gyazo.com/8f0e36a3134154acde0b77cf2ade61a6
は、たぶん私は時代遅れの構文を使用したり、このようなもの?なぜキーはユニークにfalseに設定されていますか?
既存のインデックスをmongoから削除し、コードを再実行してください。 – VtoCorleone
@VtoCorleoneが正しいです。そのインデックスはすでに存在していた可能性があります。それを削除してから再作成する必要があるかもしれません。 –
イェップ、私はそれを試みた。どのような場合でも、インデックスには一意のfalseが設定されています。 オプションに問題があるようです: collection.createIndex({email:1}、{unique:true}) インデックスが作成されているが一意ではないためです。 –