具有特定值的Mongoose模式属性

这是我的代码:

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

我的目标是将angular色属性定义为具有特定的值('admin','member','guest'等等),有什么更好的方法来实现呢? 提前致谢!

你可以做枚举。

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

我并没有真正知道具有特定的angular色价值的方法,但也许你想创build基于主对象types的多个对象types,每个对象types都有自己的angular色(以及其他任何你想要的区分)。 例如…

 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 

另一种可能性是具有构造函数的userSchema,它很容易让你select一个内置的值。 一个例子…

 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