マングースで列挙型を作成して使用する方法


92

enumマングースで型を作成して使用しようとしています。チェックアウトしましたが、適切な結果が得られません。私はenum自分のプログラムで次のように使用しています:

私のスキーマは次のとおりです。

var RequirementSchema = new mongooseSchema({
   status: {
        type: String,
        enum : ['NEW,'STATUS'],
        default: 'NEW'
    },
})

しかし、私はここで少し混乱しています。どうすればenumlikeの値をに入れることができますかJava NEW("new")enum列挙可能な値に従ってデータベースにを保存するにはどうすればよいですか。Expressnode.jsで使用しています。

回答:


143

ここでの列挙型は基本的にStringオブジェクトです。列挙型の行をenum: ['NEW', 'STATUS']代わりにに変更します。引用符が付いたタイプミスがあります。


これをユーザーテーブルにどのようにリンクしますか?私のは動作しません。私のユーザーテーブル私はこの1つのロールを挿入しました:{タイプ:
mongoose.Schema.Types.ObjectId

61

ドキュメントから

マングースにはいくつかのバリデーターが組み込まれています。文字列には、バリデーターの1つとして列挙型があります。したがって、列挙型はバリデーターを作成し、値が配列で指定されているかどうかを確認します。例えば:

var userSchema = new mongooseSchema({
   userType: {
        type: String,
        enum : ['user','admin'],
        default: 'user'
    },
})


デフォルトのuserTypeを保存することができてありがとう。userTypeをjsからamdinに変更するにはどうすればよいですか?
クワイ=ガン・ジン

これをユーザーテーブルにどのようにリンクしますか?私のは動作しません。私のユーザーテーブル私はこの1つのロールを挿入しました:{タイプ:
mongoose.Schema.Types.ObjectId

10

列挙型は文字列オブジェクトなので、たとえば:enum :['a','b','c']またはおそらくこのように const listOfEn = ['a','b','c']; => enum: listOfEn


1

Roleによって定義された列挙型があるとしましょう

export enum Role {
  ADMIN = 'ADMIN',
  USER = 'USER'
}

次のようなタイプとして使用できます。

{
    type: String,
    enum: Role,
    default: Role.USER,
}

0

TypeScriptを使用したい場合はenum、インターフェイスで使用できますIUserSchemaが、スキーマではarray(=> Object.values(userRole))を使用する必要があります。

export enum userRole {
    admin = 'admin',
    user = 'user'
}

const UserSchema: Schema = new Schema({
    userType: { 
       type: String, 
       enum: Object.values(userRole), 
       default: userRole.user, required: true
    },
});

export interface IUserSchema extends Document {
    userType: userRole
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.