【发布时间】:2019-06-15 03:00:37
【问题描述】:
当使用 mongoose 的 findOne 函数并按特定字段搜索时,我遇到了一个奇怪的错误。我正在使用 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] 无法读取未定义的属性“值”
【问题讨论】:
标签: mongoose