Я пытаюсь показать данные из базы данных. У меня есть 3 схемы, все они объединены в одну. Но объединенные данные не отображаются. Я приложил мою схему 3.
async-wait работает нормально с try-catch, который мне кажется чистым. Я также пытался следовать за мангуста . Оба возвращают один и тот же результат.
Нужно упомянуть: я новичок. Таким образом, у вас нет четкого представления о лучших методах, которым нужно следовать.
Схема книги:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const BookSchema = new Schema({
title: {
type : String,
required : [true, 'Book Title is Required'],
max : 100,
min : 5,
trim : true,
lowercase: true
},
author: {
type : Schema.Types.ObjectId,
ref : 'Author',
required: [true, 'Author is Required']
}
genre: [{
type: Schema.Types.ObjectId,
ref : 'Genre'
}]
}, { collection : 'book', timestamps: true });
BookSchema
.virtual('url')
.get(() => {
return 'book/' + this._id;
});
module.exports = mongoose.model('Book', BookSchema);
Схема автора:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const AuthorSchema = new Schema({
firstName: {
type : String,
required : [true, 'First Name is Required'],
max : 100,
min : 5,
trim : true,
lowercase: true
},
lastName: {
type : String,
required : [true, 'Last Name is Required'],
max : 100,
min : 5,
trim : true,
lowercase: true
}
}, { collection : 'author', timestamps: true });
AuthorSchema
.virtual('name')
.get(() => {
return this.firstName + this.lastName;
});
module.exports = mongoose.model('Author', AuthorSchema);
Схема жанра:
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const GenreSchema = new Schema({
name: {
type : String,
required : [true, 'Genre Name is Required'],
max : 100,
min : 3,
trim : true,
lowercase: true
}
}, { collection : 'genre', timestamps: true });
module.exports = mongoose.model('Genre', GenreSchema);
Контроллер книги:
exports.bookList = async(req, res, next) => {
try {
const bookList = await Book.find({}).populate('author').exec();
res.render('./book/index', { title: 'Book List', bookList: bookList});
} catch (error) {
res.status(500).json({ message: error.message });
}
};
index.pug:
ul
each book in bookList
li
a(href=book.url) #{book.title}
| (#{book.author.name})
else
li No book Has Been Listed Yet...!
- URL не добавляет идентификатор
- Данные об авторах не являютсяпоказывая
- Если я использую .populate (), то. он показывает (Нан)
- Если я не использую заполнение, он ничего не возвращает
Ожидаемый результат: обезьяны и ангелы (Джон)
Токовый выход: обезьян и ангелов (NaN)