Я хочу использовать Mongoose
Population
и получать информацию из других коллекций. Мои модели:Как работает население мангуста
var mongoose = require('mongoose');
var Users = require('../users');
var schema = new mongoose.Schema({
book_name: String,
book_publisher: String
});
var book = mongoose.model('book', schema);
module.exports = book;
И
var mongoose = require('mongoose');
var Book = require('../book');
var Schema = mongoose.Schema;
var schema = new mongoose.Schema({
user_name: String,
books: [{ type: Schema.Types.ObjectId, ref: 'Book' }]
});
var users = mongoose.model('users', schema);
module.exports = users;
Я хочу, чтобы хранить каждый пользователь книг внутри books field
и заселить их от Books collection
. Но я не могу понять, как это происходит? Как моя схема Users
подключается к схеме Book
? Я имею в виду, что поле _id внутри схемы книги должно совпадать с _id в схеме пользователей? Я не указывал никакого отношения, которое я думаю, но в каждом учебнике, которое я читал, все они похожи на это. Я хочу, чтобы каждый пользователь книги отдельно, но что является ключевым элементом для сравнения в двух коллекциях? Я что-то делаю в методе поиска? это моя находка:
Users.find({book_name:name).populate('books').exec(
function(err, users) {
if (err) {
throw err;
}
var new_user = users;
}
);
на самом деле мой вопрос, как это .populate('books')
работы. Я никогда не говорю, какое поле в схеме книг связано с схемой пользователей. Я смущен.
И сейчас, когда я запускаю это, я ничего не получаю в заполненном поле, он пуст. должен ли я писать метод сохранения, а сохраненные элементы должны находиться под этим отношением? в моем приложении эти две коллекции заполняются отдельно и из отдельных источников.
тогда _id's в схеме книги может быть дубликат? потому что я хочу, чтобы пользователь мог иметь более одной книги! – Fcoder