猿问

Node.js:猫鼬 .populate() 不显示数据

我正在尝试显示数据库中的数据。我有 3 个架构,将所有架构合二为一。但是,组合数据没有显示。我附上了我的 3 架构。


async-wait 与 try-catch 一起工作正常,这对我来说似乎很干净。我也尝试关注mongoose populate。两者都返回相同的结果。


需要说明的是:我是新手。因此,不要对要遵循的最佳实践有很好的了解。


书籍架构:


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);

  1. URL 未附加 ID

  2. 作者数据未显示

  3. 如果我使用 .populate(),那么。它正在显示(南)

  4. 如果我不使用填充,它不会返回任何内容

预期输出: 猿和天使(约翰)

当前输出: 猿和天使(NaN)


开心每一天1111
浏览 173回答 2
2回答

拉丁的传说

请尝试以下代码。我认为,它会起作用exports.bookList = async(req, res, next) => {    try {        const bookList = await Book.find({}).populate('author').exec((error, list) => list);        res.render('./book/index', { title: 'Book List', bookList: bookList});    } catch (error) {        res.status(500).json({ message: error.message });    }};

当年话下

在我的查询中,我只需要添加回调,如:exports.bookList = async(req, res, next) => {    try {        const bookList = await Book.find({}).populate('author').exec((err, bookList) => {            if (err) return bookInstanceList;            // console.log(bookList);            res.render('./book/index', { title: 'Book List', bookList: bookList});        });    } catch (error) {        res.status(500).json({ message: error.message });    }};主要问题是 Schema 中的箭头函数。我使用箭头函数来获取对象。但是,箭头函数不适用于对象。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答