#node.js #mongoose
Вопрос:
Я пытаюсь заполнить свою виртуальную схему с помощью .find, но возвращаемое значение не определено. Я попытался использовать .findOne, и он работает, но возвращает только одно значение. Результат, который я хочу, — это иметь две схемы postSchema и UserSchema. Я хочу получить аватарфото из схемы пользователей, которая будет использоваться в моем компоненте, который будет отображать список сообщений с именем пользователя, данными, аватарфото, текстом и изображениями, но я заполню его с помощью виртуальной схемы, потому что мне не нужно хранить данные внутри моей схемы сообщений. Имя пользователя будет значением, которое имеют обе схемы.
Schema
const userSchema = mongoose.Schema(
{
email: {
type: String,
required: true,
unique: true,
},
fullname: {
type: String,
required: true,
},
username: {
type: String,
required: true,
unique: true,
},
password: {
type: String,
required: true,
minlength: 6,
},
avatarPhoto: {
type: String,
},
about: {
type: String,
},
},
{
timestamps: true,
}
);
const postSchema = mongoose.Schema(
{
username: {
type: String,
},
title: {
type: String,
},
description: {
type: String,
},
postImageCollection: {
type: Array,
},
},
{
timestamps: true,
}
);
postSchema.virtual('user', {
ref: 'userModel',
localField: 'username',
foreignField: 'username',
justOne: true,
});
Controller
export const getUserRelatedPost = asyncHandler(async (req, res) => {
const postData = await postModel
.find()
.populate({
path: 'user',
select: 'avatarPhoto',
});
res.json(postData);
console.log(postData.user.avatarPhoto); // Undefined
});