2017-11-02 13 views
0

私はタスク管理のためのAPIを実装しており、2つのエンドポイントのユーザーとタスクを持っています。 「ユーザー」のスキーマ設計は、次のようになります。スキーマ設計のフィールドを一意にする。 (RESTful API)

// Define our user schema 
var userSchema = new mongoose.Schema({ 
    name: { 
     type:String, 
     required: true 
    }, 

    email: { 
     type: String, 
     required: true 
    }, 

    pendingTasks: [String], 

    dateCreated: { 
     type: Date, 
     default: Date.now } 
}); 

私の質問は、どのデータを一意にすることですか? (同じメールを複数のユーザに許可することはできません)

+1

を[?ドキュメントでookingと "ユニーク" 検索](HTTP ://mongoosejs.com/docs/validation.html#the-unique-option-is-not-a-validator)。 ["mongoose unique"](https://www.google.com/q=mongoose+schema+unique)または["mongodb unique"](https://www.google.com/q=mongodb +ユニークな)関連情報の負荷につながります。 –

答えて

1

あなたのコレクションには重複したメールは許可されません。

これをアーカイブする1つの方法は、unique indexの定義をemailプロパティに追加することです。このように:

// Define our user schema 
var userSchema = new mongoose.Schema({ 
    name: { 
     type:String, 
     required: true 
    }, 

    email: { 
     type: String, 
     required: true, 
     index: true, // NEW Added! 
     unique: true // NEW Added! 
    }, 

    pendingTasks: [String], 

    dateCreated: { 
     type: Date, 
     default: Date.now } 
}); 

Plsはあなたのマングースを(私はあなたが再起動のNode.jsアプリケーションでそれを行うことができると思います)を再起動することを忘れないでください。デフォルトでは、mongooseは起動時に索引を作成します。

作成するインデックスを確認するには、mongodbコンソールにログインし、db.users.getIndexes()を使用して確認します。

参考:

マングースによってインデックスを定義する方法
  1. http://mongoosejs.com/docs/schematypes.html
  2. MongoDBの公式ガイド:Lだけたぶんhttps://docs.mongodb.com/manual/core/index-unique/
+0

ありがとう、これは素晴らしい答えです。また、RESTful APIを作成する際の私の別の質問を見てもらえますか? :https://stackoverflow.com/questions/47067974/validator-erorr-when-posting-creating-a-restful-api – Dawn17

+0

@ Dawn17、あなたは大歓迎です、あなたはその質問について私の提案を見ることができます:) – yellowB