简体   繁体   English

如何在 mongoose.model 中更改集合名称?

[英]How to change collection name in mongoose.model?

Am new in Nodejs , Am trying to create user login system with mongoDB and passportjs .我是Nodejs ,我正在尝试使用mongoDBpassportjs创建用户登录系统。 Here i want to change collection name.在这里我想更改集合名称。

i refer this video here在这里参考这个视频

This is my code:这是我的代码:

Database connection js数据库连接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);
        });
    });
}

This is my database structure这是我的数据库结构在此处输入图片说明

When i user correct username and password for login passportjs shows null .当我使用正确的用户名和密码登录时,passportjs 显示null

Need to change collection name as admin .需要将collection名称更改为admin

I don't know how to ask this question.我不知道怎么问这个问题。 If am asking wrong sorry for all.如果我问错了对不起。

You can use this structure.您可以使用这种结构。 API structure of mongoose.model is this: mongoose.model 的 API 结构是这样的:

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

which means意思是

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

You can do with this too你也可以这样做

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

See this link from the Mongoose documentation.请参阅 Mongoose 文档中的此链接

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 mongoose.model函数中的名称与mongodb中的集合名称不同 - the name in mongoose.model function is not same as collection name in mongodb 错误:mongoose.model 不是函数 - Error: mongoose.model is not a function 如何在猫鼬中声明集合名称和模型名称 - How to declare collection name and model name in mongoose Mongoose.model('model_name') 在 mongoose 模型模式文件中需要函数时返回空对象 - Mongoose.model('model_name') return empty object when function is required in the mongoose model schema file 将Webpack与Mongoose结合使用-mongoose.model不是函数 - Using Webpack with Mongoose - mongoose.model is not a function 如何将集合名称放入猫鼬模型 - How to put collection name in mongoose model 如何通过集合名称获取 Mongoose model? - How to get a Mongoose model by collection name? 尚未为模型 \\"ref\\" 注册架构。\\n使用 mongoose.model(name, schema) - Schema hasn't been registered for model \"ref\".\nUse mongoose.model(name, schema) 架构尚未为 model “订单”注册。 使用 mongoose.model(name, schema) 那么哪里出错 - Schema hasn't been registered for model “Order”. Use mongoose.model(name, schema) So where the error 致命错误:尚未为模型“ a”注册架构。 使用mongoose.model(名称,模式) - Fatal error: Schema hasn't been registered for model “a”. Use mongoose.model(name, schema)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM