【发布时间】:2018-09-17 05:40:40
【问题描述】:
我正在关注 stephen grider 的全栈反应课程。一切看起来都不错,但在 google 社交身份验证之后,我看不到新的 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)
user.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 数据库中创建新集合?
【问题讨论】:
-
我在您的
User架构 (user.js) 中看不到module.export。 -
@AnkitAgarwal 你能告诉我要从中导出什么吗?我们不能直接访问用户吗?
-
将
mongoose.model('users', userSchema);替换为module.export = mongoose.model('users', userSchema);并尝试。因为您需要导出model以便在您的passport.js文件中使用它。 -
尝试
module.exportS而不是module.export。
标签: node.js mongodb mongoose passport.js mlab