Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 如何将userSchema中的enum设置为空默认值_Node.js_Mongodb_Express_Mongoose_Passport.js - Fatal编程技术网

Node.js 如何将userSchema中的enum设置为空默认值

Node.js 如何将userSchema中的enum设置为空默认值,node.js,mongodb,express,mongoose,passport.js,Node.js,Mongodb,Express,Mongoose,Passport.js,我目前正在为一个使用MongoDB作为数据库、ExpressJS和PassportJS的项目编写一份注册表,但是,我试图让用户能够选择rol,然后在数据库中注册,以便在用户登录后重定向到正确的页面 const mongoose = require("mongoose"); const Schema = mongoose.Schema; const userSchema = new Schema({ name: String, username: String, pass

我目前正在为一个使用MongoDB作为数据库、ExpressJS和PassportJS的项目编写一份注册表,但是,我试图让用户能够选择rol,然后在数据库中注册,以便在用户登录后重定向到正确的页面

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”设置为默认值,它始终是用户注册后获得的。我找到了一个解决方案,它实际上运行得非常完美

我保持用户模式不变

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;
我唯一修改的是注册表单配置:(注册没有这个功能,只是为了测试)

注册
全名


用户名

密码

--请选择一个选项-- 铁匠 雇主 管理员 {{{#如果消息} {{message}} {{/if}

创建帐户

你已经有账户了吗?


因此,它现在可以检测角色,并正确地为用户提供角色和权限。

您能解释一下空的重要性吗?因此,我可以想象场景。空的重要性在于,如果我当前注册了一个用户,它将自动默认分配一个值,而不管他真正的角色是什么,IRONHACKER,这是一个学生档案,我正在寻找这个角色的主要动作是填写档案并搜索工作,另一个角色是雇主,它基本上是发布、删除和审核学生提交的公司。其中每一个都必须访问不同的页面,它们可以执行的操作也会有所不同。请注意,枚举基本上是一个验证规则,用于验证字段中可以输入和不能输入的内容。插入不存在的内容会违反此规则。也许不是这样,也许有必要插入第四条规则。只使用数据库的规则。我理解你的意思,也许我必须使用不同的东西才能得到我期望的结果,因为即使我添加了第四条规则,仍然不允许用户选择其角色并将其记录在数据库中。基于此:。您是否尝试过
[null,'COMPANY','IRONHACKER','ADMIN']
默认值:null
?或者只是
默认值:null
    <h2>Signup</h2>

<form action="/signup" method="POST" id="form-container">
  <label for="name">Full Name</label>
  <input id="name" type="name" name="name" placeholder="Provide your Name">
  <br>
  <br>
  <label for="username">Username</label>
  <input id="username" type="text" name="username" placeholder="Set Username">
  <br>
  <br>
  <label for="password">Password</label>
  <input id="password" type="password" name="password" placeholder="Set a password"> 
  <br>
  <br>
  <select name="role" id="role">
    <option value="" disabled="disabled" selected="selected">--Please choose an option--</option>
    <option value="IRONHACKER">Ironhacker</option>
    <option value="COMPANY">Employer</option>
    <option value="ADMIN">Administrator</option>
  </select>
  {{#if message}}
    <div class="error-message">{{ message }}</div>
  {{/if}}
  <br>
  <br>
  <button>Create account</button>

  <p class="account-message">
    Do you already have an account?
    <a href="/login">Login</a>
  </p>
</form>