При использовании функции findOne mongoose и поиске по определенному полю я сталкиваюсь со странной ошибкой.Я использую mongoose 5.6.0 и mongoDB 3.6.9.
Не могу понять, в чем проблема, пожалуйста, помогите!
Вот звонок:
User.findOne({googleId:googleId})
.select('-password')
.exec()
.then(user => {
if(user)
{
const googleUser = user;
return done(null, googleUser);
}
else
{
const newUser = new User({
_id: new mongoose.Types.ObjectId(),
method: "Google",
email: profile.emails[0].value,
googleId: googleId,
role: "User"
});
newUser.save()
.then(saveduser => {
const googleUser = saveduser;
return done(null, googleUser);
})
.catch(error => {
log.error("Error saving Google ID: " + googleId + " => " + error.message);
return done(error, false)
})
}
})
.catch(error => {
log.error("Error looking up Google ID: " + googleId + " => " + error.message);
return done(error, false)
})
Вот схема пользователя:
/*
==============================================
User Model
==============================================
*/
const mongoose = require('mongoose');
const userSchema = mongoose.Schema({
_id: mongoose.Schema.Types.ObjectId,
email: {
type: String,
unique: true,
},
password: {
type: String,
required: function() {
return this.method === "Local";
}
},
role: {
type: String,
enum: ["Developer", "Admin", "Moderator", "User"],
required: true
},
enabled: {
type: Boolean,
required: true,
default: true
},
method: {
type: String,
enum: ["Local", "Google", "Facebook"],
default: "Local"
},
googleId: {
type: String,
default: ''
},
facebookId: {
type: String,
default: ''
}
},
{
timestamps: true
});
module.exports = mongoose.model('User', userSchema);
А вот ошибка:
[2019-06-14T22: 47: 16.055] Невозможно прочитать свойство 'значение' из неопределенного