У меня, очевидно, есть пользователь в моей локальной копии моей базы данных MongoDB.
Я зашел в соответствующую базу данных через use server_users
, но когда я делаю db.getUsers()
, я получаю пустой массив.
Но когда я запускаю это в своем node
REPL:
> Buffer.from(session, 'base64').toString('utf8')
'{"passport":{"user":"5ad25c401dfbaee22188a93b"}}'
Вы можете ясно видеть, что у меня есть пользователь в моей базе данных Mongo.
Как мне вызвать этого пользователя в моей оболочке mongo?
Это мой 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.serializeUser((user, done) => {
done(null, user.id);
});
passport.deserializeUser((id, done) => {
User.findById(id).then(user => {
done(null, user);
});
});
// passport.use() is a generic register to make Passport
// aware of new strategy
// creates a new instance to authenticate users
passport.use(
new GoogleStrategy(
{
clientID: keys.googleClientID,
clientSecret: keys.googleClientSecret,
callbackURL: '/auth/google/callback',
proxy: true
},
async (accessToken, refreshToken, profile, done) => {
const existingUser = await User.findOne({ googleId: profile.id });
if (existingUser) {
// we already have a record with given profile id
done(null, existingUser);
}
// we dont have a user record with this id, make a new record
const user = await new User({ googleId: profile.id }).save();
done(null, user);
}
)
);
Судя по показанному содержанию, вопрос на самом деле означает "детали проверки подлинности паспорта, хранящиеся в коллекции", что, конечно же, НЕ имеет отношения к db.getUsers()
, поскольку это относится к "Управление доступом и аутентификация MongoDB", который не является частью "пользователи приложения". Таким образом, данные содержатся в коллекции, которая была названа в настройках «паспорта» для приложения. Вы «получаете пользователей», просто нажимая find()
на соответствующую коллекцию.
@NeilLunn, спасибо, что освежил мою память. Я не пишу запросы оболочки Mongo так часто, как хотелось бы. Пожалуйста, напишите как ответ.
Шаг 1
> show dbs
admin 0.000GB
auth 0.000GB
local 0.000GB
muber 0.000GB
seed_data 0.000GB
server_users 0.000GB
upstar_music 0.004GB
users_test 0.000GB
Шаг 2
> use auth
switched to db auth
Шаг 3
> db.getCollection('users').find({}).pretty()
{
"_id" : ObjectId("5cedf41999c20922fd05cdce"),
"email" : "[email protected]",
"password" : "$2a$10$Yu194aPMrwuA6JZStTwu7OmaAugFNM1XvXDDBVpF1d5wKKHaPmLFe",
"__v" : 0
}
{
"_id" : ObjectId("5ceee2237d1b22dfbf37820f"),
"email" : "[email protected]",
"password" : "$2a$10$.a9jWOSQbLG32lInCCUwGeqZDM9ksbTN7MDMo1kbOaApmMUr3cCLO",
"__v" : 0
}
{
"_id" : ObjectId("5ceeeb02d35e4ee61d602040"),
"email" : "[email protected]",
"password" : "$2a$10$fSq31UO/4IEPMaXzgIHXK.zlMO8IUPsVh4Vf9MRo7zldk9dSgiwVS",
"__v" : 0
}
{
"_id" : ObjectId("5ceeee0bd72c8ae85dcbbc7f"),
"email" : "[email protected]",
"password" : "$2a$10$l/99bU2MpElHhVFNXk1tB.k69DOAcdc/ySuek33MjtjAB0yLTqAqi",
"__v" : 0
}
{
"_id" : ObjectId("5ceef1cddf3064eaf8530f68"),
"email" : "[email protected]",
"password" : "$2a$10$aKzilNGIm9HZx0iSXhsvbe9UCFqNt5FWjVd7T.GX7uKawAfCyG3JS",
"__v" : 0
}
{
"_id" : ObjectId("5cef25fc43a429ec05759849"),
"email" : "[email protected]",
"password" : "$2a$10$JY0w/UuvT4Ub7T3RR9.VVOIH6V4RX9bTwoWzwEBbTiidPEiasakNq",
"__v" : 0
}
Вы имеете в виду пользователей MongoDB, используемых для аутентификации в MongoDB, или коллекцию
users
, в которой хранятся учетные записи пользователей для приложения?