は、次のスキーマを考えます。 どうすれば定義できますか?マングース:スキーマフィールドをIDに設定する方法は?私は<code>email</code>がキーになりたい</p> <pre><code>var UserSchema = new Schema({ , email : { type: String } , passwordHash : { type: String } , roles : { type: [String] } }); </code></pre> <p>:
私は何ができる:
var UserSchema = new Schema({
, _id: { type: String }
, passwordHash : { type: String }
, roles : { type: [String] }
});
ので、MongoDBは、IDフィールドとしてそれを認識し、自分のコードを適応させる_id
代わりのemail
を参照するが、それは私にはきれいな感じがしないでしょう。
誰でも?
私はあなたがオブジェクトIDとして_idを残し、ユニークインデックスのメールを作るほうだと思う。それを含めるには、あなたは
toObject()
またはtoJSON()
コールでvirtuals: true
オプションを設定する必要があります。 – JohnnyHKこれは一般的なコンセンサスですか? Domain-IdをUniqueとし、MongoDBが技術的IDを管理できるようにしますか? –
あなたはMongooseを使用しているので、別のオプションとして、電子メール文字列を_idフィールドとして使用し、返された「email」という名前の[仮想フィールド](http://mongoosejs.com/docs/virtuals.html) _idは電子メールを使用するコードをクリーンアップします。 – JohnnyHK