首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将给定的模型保存在数据库mongodb中的特定集合中?

如何将给定的模型保存在数据库mongodb中的特定集合中?
EN

Stack Overflow用户
提问于 2020-12-22 22:59:27
回答 1查看 98关注 0票数 0

我有三种型号:user, teacher, studentusers, teachers, students集合出现在数据库中。但是所有东西都保存在users集合中。如何在下面的代码中设置student保存在students集合中,而不是在users中。

模型

代码语言:javascript
复制
const mongoose = require('mongoose');
extend = require('mongoose-extend-schema');
const Schema = mongoose.Schema;

const userSchema = new Schema({
    name: {
        type: String,
        trim: true,
        required: true,
        maxLength: 32
    },
    surname: {
        type: String,
        trim: true,
        required: true,
        maxLength: 32
    },
    email: {
        type: String,
        unique: true,
        trim: true,
        required: true,
        lowercase: true
    },
    initials: String
});



const studentSchema = extend(userSchema, {
    teachers: []   
});

const teacherSchema = extend(userSchema, {
    isActiveTutor: {
        type: Boolean,
        default: false
    }
})
  


const User =  mongoose.model('User', userSchema);
const Student = mongoose.model('Student', studentSchema);
const Teacher = mongoose.model('Teacher', teacherSchema);

module.exports = {
    User,
    Student,
    Teacher
}

控制器

代码语言:javascript
复制
const User = require('../models/user');
const Student = require('../models/user');
const Teacher = require('../models/user');

const jwt = require('jsonwebtoken');
const nodemailer = require('nodemailer');
const expressJwt = require('express-jwt');


module.exports.signup =  (req, res) => {
    const {name, surname, email, password, initials, role} = req.body;

    Student.User.findOne({email}).exec((err, student) => {
        if (student) {
            return res.status(400).json({
                error: "Email is taken"
            })
        }
    }
}
        

module.exports.accountActivationStudent = (req, res) => {
    const {token} = req.body;

    if(token) {
        jwt.verify(token, process.env.JWT_ACCOUNT_ACTIVATION, function(err, decoded) {
            if(err) {
                console.log('JWT VERIFY IN ACCOUNT ACTIVATION ERROR', err);

                return res.status(401).json({
                    error: 'Expired link. Signup again'
                })
            }

            const {name, surname, email, password} = jwt.decode(token);

            const student = new Student.User ({name, surname, email, password});

            student.save((err, student) => {
                if(err) {
                    console.log('SAVE Student IN ACCOUNT ACTIVATION ERROR', err);

                    return res.status(401).json({
                        error: 'Error saving student in database. Try signup again'
                    });
                }

                return res.json({
                    message: 'Signup success. Please signin'
                });
            });
        });
    } else {
            return res.json({
                message: 'Something went wrong. Try again'
            })
    }
};
EN

回答 1

Stack Overflow用户

发布于 2020-12-22 23:15:41

“新学生”是您的模式,试着喜欢以下内容

代码语言:javascript
复制
router.post('/', async (req, res) => {
  const _studentSave = await new Student({ name, surname, email, password, initials, role });
  const saveProcess = await _studentSave.save();
try{
  res.json(saveProcess)
 }catch(error){
  throw error
 }
})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65416935

复制
相关文章

相似问题

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