无法在mLab中的mongodb中添加新集合

问题描述 投票:0回答:2

我正在学习 Stephen grider 的全栈 React 课程。一切看起来都不错,但在谷歌社交认证之后,我看不到新的

users
集合被添加到 mLab 数据库中。

我正在使用 Passport.js 和 mongoose.js。

相关源码如下:

index.js

const express = require('express');
const mongoose = require('mongoose');
const keys = require('./config/keys');
require('./models/User');
require('./services/passport');

mongoose.connect(keys.mongoURI);

const app = express();

require('./routes/authRoutes')(app);

const PORT = process.env.PORT || 5000;
app.listen(PORT)

用户.js

const mongoose = require('mongoose');
const { Schema } = mongoose;

const userSchema = new Schema({
  googleId: String
});

mongoose.model('users', userSchema);    

passport.js

const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;
const mongoose = require('mongoose');
const keys = require('../config/keys');

const User = mongoose.model('users');

passport.use(
  new GoogleStrategy(
    {
      clientID: keys.googleClientID,
      clientSecret: keys.googleClientSecret,
      callbackURL: '/auth/google/callback'
    },
    (accessToken, refreshToken, profile, done) => {
      new User({ googleId: profile.id }).save();
      console.log('accessToken',accessToken,'profile',profile)
    }
  )
);

任何人都可以告诉我我在哪里犯了错误,因为 MongoDB 数据库中未创建新集合吗?

node.js mongodb mongoose passport.js mlab
2个回答
1
投票

问题出在 user.js 文件中。单独定义 Schema 是行不通的。您还需要导出它。

const mongoose = require('mongoose');
const { Schema } = mongoose;

const userSchema = new Schema({
  googleId: String
});

module.exports = mongoose.model('users', userSchema);

此外,如果有人遇到此类错误,请确保您为特定的 mongo 数据库使用正确的凭据(用户名和密码)。


0
投票

如果您的数据库密码在mLab上包含

@
,它将不起作用 删除并重试就可以了

© www.soinside.com 2019 - 2024. All rights reserved.