#javascript #mongodb #mongoose #mongodb-query #populate
#язык JavaScript #mongodb #мангуст #mongodb-запрос #населять
Вопрос:
Это мой код модели пользователя. Я ссылаюсь на избранное, используя динамическую ссылку, так как есть три типа сообщений, которые можно добавить в избранное
import mongoose from 'mongoose' import bcrypt from 'bcryptjs' const userSchema = mongoose.Schema( { name: { type: String, required: true, }, email: { type: String, required: true, unique: true, }, password: { type: String, required: true, }, isAdmin: { type: Boolean, required: true, default: false, }, contact:{ type:Number, required: true, unique:true }, cnic: { type: Number, required: true, unique: true }, favorites: [ { postType: { type: String }, postId: { type: mongoose.Schema.Types.ObjectId, refPath: 'postType' }, } ], itemsRented: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Rent', } ], itemsRentedOut: [ { type: mongoose.Schema.Types.ObjectId, ref: 'Rent', } ], collectionRequestsSent: [ { type: mongoose.Schema.Types.ObjectId, ref: 'CommunityService', } ], itemsCollected: [ { type: mongoose.Schema.Types.ObjectId, ref: 'CommunityService', } ], servicesOrdered: [ { type:mongoose.Schema.Types.ObjectId, ref: 'Services' } ], paymentDetails: { card: { type: Number }, cvc: { type: Number }, name: { type: String }, email: {type: String }, expiryDate: { month: { type: Number }, year: { type: Number } }, }, address: { type: String }, isDisputeResolutionStaff: { type: String, default: false } }, { timestamps: true, } ) userSchema.methods.matchPassword = async function (enteredPassword) { return await bcrypt.compare(enteredPassword, this.password) } userSchema.pre('save', async function (next) { if (!this.isModified('password')) { next() } const salt = await bcrypt.genSalt(10) this.password = await bcrypt.hash(this.password, salt) }) const User = mongoose.model('User', userSchema) export default User
Это мой контроллер. Я хочу, чтобы сведения о сообщениях добавлялись в избранное с помощью функции заполнить, но когда я запускаю код, он возвращает объект пользователя, а не сведения о сообщениях
const getFavorites = asyncHandler(async(req,res) =gt; { await User. findById("61b51adfb7b8a64fd87420d3"). populate("favorites"). exec(function (err, story) { if (err) throw new Error(err); console.log(story); }); })
Комментарии:
1. к какой таблице должен относиться столбец «избранное»?
2. Это относится либо к одной из Услуг, либо к Аренде, либо к коммунальному обслуживанию
3. Вы должны указать ref=’ Название модели ‘.