问题描述
所以最近几天我一直在为此苦苦挣扎。
我在Mongoose中创建了一个用户架构,并且有一个预保存钩子对它的密码字段进行了哈希处理。每次尝试将用户保存到数据库时,我都注意到save方法从未被调用过。我收到的错误消息对我而言(当时)毫无意义。事实证明,它与pre save挂钩无关,而与架构本身无关。
const UserSchema = new mongoose.Schema(
{
fullName: {
type: String,maxlength: 50
},about: {
type: String,maxlength: 500
},gender: {
type: String,},dob: {
type: String,school: {
type: String,grade: {
type: String,profilePicture: {
type: String,resume: {
type: String,email: {
type: String,password: {
type: String,minlength: 6
},favoriteJobs: {
type: Array,default: []
},followedPost: {
type: Array,posts: {
type: Array,eventsGoing: {
type: Array,studentChat: {
type: Array,default: [StudentChatSchema]
},mentorChat: {
type: Array,notifications: {
type: Array,})
预保存:
UserSchema.pre('save',function(next){
var user = this;
if (!user.isModified('password')) return next();
bcrypt.genSalt(10,(err,salt) => {
if (err) return next(err);
bcrypt.hash(user.password,salt,hash) => {
if (err) return next(err);
if(hash) {
user.password = hash;
this.password = user.password;
console.log('Password Hashed');
console.log(user.password);
return next();
}
})
})
})
错误:
Error: key $isUnderneathDocArray must not start with '$'
at serializeInto (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:911:19)
at serializeObject (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:347:18)
at serializeInto (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:937:17)
at serializeObject (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:347:18)
at serializeInto (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:937:17)
at serializeObject (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:347:18)
at serializeInto (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:727:17)
at serializeObject (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:347:18)
at serializeInto (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:937:17)
at serializeObject (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:347:18)
at serializeInto (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:937:17)
at serializeObject (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:347:18)
at serializeInto (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:937:17)
at serializeObject (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:347:18)
at serializeInto (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:727:17)
at serializeObject (/Users/ferro/Desktop/United-Way/Express/node_modules/bson/lib/bson/parser/serializer.js:347:18)
解决方法
问题出在这里
studentChat: {
type: Array,default: [StudentChatSchema]
},
到
studentChat: {
type: Array,default: []
},
无法为数组提供“架构”类型。咄。我在其他任何地方都找不到此错误消息,因此希望可以帮助其他人。