【发布时间】:2018-08-06 00:39:34
【问题描述】:
我目前正在为使用 MongoDB 作为数据库、ExpressJS 和 PassportJS 的项目编写注册表单,但是,我试图让用户能够选择角色,然后像这样在数据库中注册用户登录后重定向到正确的页面。
const mongoose = require("mongoose");
const Schema = mongoose.Schema;
const userSchema = new Schema({
name: String,
username: String,
password: String,
role: {
type: String,
enum: ['COMPANY', 'IRONHACKER', 'ADMIN'],
default: 'IRONHACKER',
},
session: String,
last_login: {
type: Date,
default: ""
}
}, {
timestamps: {
createdAt: "created_at",
updatedAt: "updated_at"
},
});
const User = mongoose.model("User", userSchema);
module.exports = User;
默认情况下它有 3 个值,用户只能选择 2 个:IRONHACKER 和 COMPANY。
目前,它的行为有所不同,因为我将“IRONHACKER”设置为默认值,所以它始终是用户注册后得到的。
【问题讨论】:
-
你能解释一下空虚的重要性吗?这样我就可以想象风景了。
-
为空的重要性在于,如果我当前注册了一个用户,它会自动默认分配一个值,而不管他真正拥有的角色,无论是 IRONHACKER,这是一个学生档案和我正在寻找这个角色的主要行动是填写个人资料并寻找工作,另一个角色是 EMPLOYER,基本上是发布、删除和审查学生提交的公司。它们中的每一个都必须访问不同的页面,并且它们可以执行的操作会有所不同。
-
所以我阅读了文档。请注意,枚举基本上是在字段中可以输入和不可以输入的验证规则。插入不存在的东西打破了这个规则。也许这不是办法,可能需要插入第四条规则。只使用数据库的规则。
-
我明白你的意思,也许我必须使用不同的东西才能得到我期望的结果,因为即使我添加了第四条规则仍然不允许用户选择它的角色和记录在数据库中。
-
基于此:github.com/Automattic/mongoose/issues/3044。你试过
[null, 'COMPANY', 'IRONHACKER', 'ADMIN']和default: null吗?或者只是default: null?
标签: node.js mongodb express mongoose passport.js