如何在mongoose.model中更改集合名称? [英] How to change collection name in mongoose.model?

查看:247
本文介绍了如何在mongoose.model中更改集合名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Nodejs的新用户,正在尝试使用mongoDBpassportjs创建用户登录系统.在这里我要更改集合名称.

Am new in Nodejs, Am trying to create user login system with mongoDB and passportjs. Here i want to change collection name.

我在此处

这是我的代码:

数据库连接js

config/database.js

module.exports = {
    database : 'mongodb://localhost:27017/my_first_project',
    secret : 'Mysecret'
}

models/admin.js

const mongoose = require('mongoose');

let AdminSchema = mongoose.Schema({
    name:{
        type: String,
        required: true
    },
    email:{
        type: String,
        required: true
    },
    username:{
        type: String,
        required: true
    },
    password:{
        type: String,
        required: true
    },
    created_on:{
        type: Date,
        default: Date.now 
    },
    status:{
        type: Number,
        required: true,
        validate : {
            validator : Number.isInteger,
            message   : '{VALUE} is not an integer value'
        }
    }
});

const Admin = module.exports = mongoose.model('User', AdminSchema);

config/passport.js

const LocalStorage = require('passport-local').Strategy;
const User = require('../models/admin');
const config = require('../config/database');
const bcrypt = require('bcryptjs');

module.exports = function(passport){
    //Local Strategy
    passport.use(new LocalStorage(function(username, password, done){
        //Check username
        let query = {username:username};
        console.log(query);
        User.findOne(query, function(err, user){
            console.log(user);
            if(err) throw err;
            if(!user)
            {
                return done(null, false, {message: 'No user found'});
            }
            //check password
            bcrypt.compare(password, user.password, function(err, isMatch){
                if(err) throw err;
                if(isMatch){
                    return done(null, user);
                }else{
                    return done(null, false, {message: 'Wrong password'});
                }
            });
        });
    }));

    passport.serializeUser(function(user, done) {
        done(null, user.id);
    });

    passport.deserializeUser(function(id, done) {
        User.findById(id, function(err, user) {
            done(err, user);
        });
    });
}

这是我的数据库结构

当我使用正确的用户名和密码登录passwordjs时,显示null.

When i user correct username and password for login passportjs shows null.

需要将collection名称更改为admin.

我不知道如何问这个问题.如果要问错对不起所有人.

I don't know how to ask this question. If am asking wrong sorry for all.

推荐答案

您可以使用此结构. mongoose.model的API结构是这样的:

You can use this structure. API structure of mongoose.model is this:

 Mongoose#model(name, [schema], [collection], [skipInit])

表示

 mongoose.model('User', AdminSchema, 'admin'); 
 //Here 3rd argument 'admin': as collection name

您也可以这样做

let AdminSchema = mongoose.Schema({
  username : String,
  password : String.
  ....... 
}, { collection: 'admin' });

请参阅Mongoose文档中的此链接.

See this link from the Mongoose documentation.

这篇关于如何在mongoose.model中更改集合名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆