考慮以下:
我有一個User架構:
const UserSchema = new mongoose.Schema(
{
email: {
type: String,
required: true,
trim: true,
lowercase: true,
index: { unique: true },
validate: {
validator: emailValidator.validate,
message: props => `${props.value} is not a valid email address!`
}
},
password: {
type: String,
required: true,
trim: true,
index: { unique: true },
minlength: 7,
maxlength: 11
},
roles: [{ type: 'String' }],
isVerified: { type: Boolean, default: false },
passwordResetToken: String,
resetPasswordExpires: Date
},
{
timestamps: true
}
);
export default mongoose.models.User || mongoose.model('User', UserSchema)
我有一個Profile架構:
const ProfileSchema = new Schema({
name: {
type: String,
},
email: {
type: Schema.Types.ObjectId, ref: 'User',
},
password: {
type: Schema.Types.ObjectId, ref: 'User',
},
interestedActivities: {
type: String,
},
memerSince: { type: Date, default: Date.now }
})
export default mongoose.models.Profile || mongoose.model('Profile', ProfileSchema)
請問以上自動地填充ProfileSchema與email和和Password從用戶?
所以在我route/api如/api/profile例如將它隱含知道兩者有聯系?
就像我這樣做:
匯入組態檔 ../../models/Profile
handler
.use(auth)
.get((req, res) => {
Profile.findOne(
{
email: req.body.email
},
});
export default handler
它應該回傳在用戶中創建的電子郵件?
提前致謝!
uj5u.com熱心網友回復:
不,它不會自動填充e-mail和password。您也不能將電子郵件分配給一個reference地方。如果你嘗試,你會得到一個Validation Error. 因為你剛剛定義為ObjectId;
email: {
type: Schema.Types.ObjectId, ref: 'User',
}
Aref回傳 an userId,您可以使用 this 進行填充userId。像這樣:
handler
.use(auth)
.get((req, res) => {
Profile.findOne(
{
userId: req.body.userId
},
}).populate('userId').select('email password bla bla');
export default handler
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/387312.html
上一篇:如何在Node.js中使用mongoose.Schema添加特定長度的陣列?
下一篇:使用貓鼬對陣列中的值進行排序
