我正在使用 passport-local-mongoose 在我的網站中實施身份驗證,但是在注冊新用戶時,我收到以下錯誤:
MongoServerError: E11000 duplicate key error collection: myDatabase.users index: email_1 dup key: { email: null }
我以前為我的用戶有一個電子郵件欄位,但我洗掉了它,因為我的應用程式不需要它
這是我的模型
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var passportLocalMongoose = require('passport-local-mongoose');
var UserSchema = new Schema({
username : {type: String, unique: true, required: true},
});
UserSchema.plugin(passportLocalMongoose);
module.exports = mongoose.model("User", UserSchema);
我也使用 mongodb atlas 作為我的資料庫
第一次注冊新用戶時沒有出現這個錯誤 我該如何解決這個問題?
uj5u.com熱心網友回復:
看起來您曾經在其上設定了唯一索引的電子郵件欄位。
第一個用戶在沒有電子郵件的情況下創建得很好,因為沒有其他用戶"email": null
對其進行設定。現在有了一個,所有沒有電子郵件的新用戶都將是重復的,并且unique
索引不允許重復。
與模式不同,索引是在資料庫中設定的,而不僅僅是在代碼中。這意味著您必須從資料庫中洗掉索引。您可以通過任何 GUI mongodb 瀏覽器執行此操作。當您使用 Atlas 時,您可以直接通過他們的 Web 界面進行操作。以下是說明:
洗掉索引
要通過資料資源管理器從集合中洗掉索引:
1 轉到索引選項卡。
選擇要洗掉其索引的集合,然后轉到“索引”選項卡。
2 單擊洗掉索引按鈕以洗掉要洗掉的索引。
3 確認操作。
通過鍵入索引的名稱進行確認,然后單擊 Drop。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/443990.html
下一篇:用貓鼬洗掉陣列中的子檔案