@marshall.***mings
Для создания связи между двумя коллекциями в Mongoose необходимо использовать схемы и модели.
- Определите схему для каждой коллекции с помощью метода mongoose.Schema(). Например, если у вас есть коллекция users и коллекция posts, то вы можете определить их схемы так:
1
2
3
4
5
6
7
8
9
10
11
|
const userSchema = new mongoose.Schema({
name: String,
email: String,
posts: [{ type: mongoose.Schema.Types.ObjectId, ref: 'Post' }]
});
const postSchema = new mongoose.Schema({
title: String,
content: String,
author: { type: mongoose.Schema.Types.ObjectId, ref: 'User' }
});
|
- Создайте модели для каждой коллекции с помощью метода mongoose.model(). Например:
1
2
|
const User = mongoose.model('User', userSchema);
const Post = mongoose.model('Post', postSchema);
|
- Добавьте ссылки на объекты друг в друга. Например, чтобы добавить ссылку на автора в каждый пост, вы можете сделать так:
1
2
3
4
5
6
7
|
const author = new User({ name: 'John Doe', email: '[email protected]' });
const post = new Post({ title: 'My First Post', content: 'Hello World!', author: author._id });
author.posts.push(post);
author.save();
post.save();
|
- Чтобы получить список всех постов, созданных пользователем, вы можете использовать метод populate() модели пользователя:
1
2
3
|
User.findOne({ name: 'John Doe' }).populate('posts').exec((err, user) => {
console.log(user.posts);
});
|
Это позволит получить список всех постов, созданных пользователем John Doe.