首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在userSchema中将枚举设置为空默认值

如何在userSchema中将枚举设置为空默认值
EN

Stack Overflow用户
提问于 2018-08-03 12:59:28
回答 1查看 1.5K关注 0票数 0

我目前正在为一个项目的注册表使用MongoDB作为数据库,ExpressJS和PassportJS,然而,我试图使用户能够选择角色,然后在数据库中注册那样,重定向到正确的页面,一旦用户登录。

代码语言:javascript
复制
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“设置为默认的,一旦注册,它总是用户得到的那个。

EN

回答 1

Stack Overflow用户

发布于 2018-08-06 00:39:35

我找到了一个解决方案,它实际上完美地解决了这个问题!

我保持userSchema不变

代码语言:javascript
复制
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;

我唯一修改的是注册表单配置:(注册不会有这个功能,它只是为了测试目的)。

代码语言:javascript
复制
    <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>

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51665597

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档