29

これが私のコードです:

var userSchema = new mongoose.Schema({
  email: String,
  password: String,
  role: Something
});

私の目標は、特定の値 (「管理者」、「メンバー」、「ゲスト」など) を持つようにロール プロパティを定義することです。これを達成するためのより良い方法は何ですか? 前もって感謝します!

4

2 に答える 2

79

列挙できます。

var userSchema = new mongoose.Schema({
  // ...
  , role: { type: String, enum: ['admin', 'guest'] }
}

var user = new User({
 // ...
 , role: 'admin'
});
于 2012-11-08T08:21:03.760 に答える
0

ロールに特定の値を設定できる方法は私が実際に知っているわけではありませんが、マスター オブジェクト タイプに基づいて複数のオブジェクト タイプを作成し、それぞれに独自のロールを持たせたいと思うかもしれません。区別)。例えば...

var userSchema = function userSchema() {};
userSchema.prototype = {
  email: String,
  password: String,
  role: undefined
}
var member = function member() {};
member.prototype = new userSchema();
member.prototype.role = 'member';

var notSupposedToBeUsed = new userSchema();
var billTheMember = new member();
console.log(notSupposedToBeUsed.role); // undefined
console.log(billTheMember.role); // member

もう 1 つの可能性は、組み込み値の 1 つを簡単に選択できるコンストラクターを持つ userSchema を使用することです。例...

var userSchema = function userSchema(role) {
    this.role = this.role[role];
    // Gets the value in userSchema.role based off of the parameter
};
userSchema.prototype = {
  email: String,
  password: String,
  role: { admin: 'admin', member: 'member', guest: 'guest' }
}
var a = new userSchema('admin');
var b = new userSchema('blah');
console.log(a.role); // 'admin'
console.log(b.role); // undefined

詳細: http://pivotallabs.com/users/pjaros/blog/articles/1368-javascript-constructors-prototypes-and-the-new-keyword

于 2012-11-08T08:51:22.947 に答える