インデックスではないフィールドで一意に強制する方法を調べようとしています。mongoose:一意のフィールドが機能していません
私はここで似たような質問をしましたが、dropDups:trueを使用した回答が降格されていると言われています。
フィールド上で一意に強制する正しい方法は何ですか?
const users = new Schema({
email: { type: String, required: true , unique: true},
...});
インデックスではないフィールドで一意に強制する方法を調べようとしています。mongoose:一意のフィールドが機能していません
私はここで似たような質問をしましたが、dropDups:trueを使用した回答が降格されていると言われています。
フィールド上で一意に強制する正しい方法は何ですか?
const users = new Schema({
email: { type: String, required: true , unique: true},
...});
このようにすると、一意のキー検証には使用できません。
var userSchema = new Schema({
name : String,
username : {
type : String,
required : true,
index : {
unique : true,
dropDups : true
}
});
ですから、今正しいと最善の方法でそれをやって、ちょうど
> db.<collection name>.drop()
はその後、サーバーとチェックを再起動し、次のコマンドを使用して、データベースからこの
ドロップのようなコレクションをそれを行いますこのようにして。
var userSchema = new Schema({
name : String,
username : {
type : String,
required : true,
unique : true
});
Thx JosephM、 しかし、私が目指していたのは、インデックスではないフィールドでは一意です。 –
ここではユーザ名はインデックスではなく、インデックスフィールドをdbでチェックすることができます。
私はあなたのコードが完璧だと思います、私は動作します。インデックスを使用する際に問題が発生していますか? – JosephM
私はちょうどmongoose APIで見つかった: 初心者のための共通の問題は、スキーマのためのユニークなオプションはバリデータではないということです。 MongoDB固有のインデックスを構築するのに便利なヘルパーです。 だから、私は一意にしたい非インデックスフィールドのために、私は手動で検証を書く必要があると思います –
@ YoniMayer値が一意であるかどうかを確実にチェックします_without_インデックスを使用していますか? – robertklep