平等搜索填充字段

时间:2019-04-05 18:56:28

标签: node.js mongoose mongoose-schema mongoose-populate

我在填充OfferSchema时遇到问题。

当我试图预订当前用户的报价时,我从猫鼬那里收到MissingSchemaError: Schema hasn't been registered for model "offer"错误。

租户字段正确填充。

即使从官方文档中,我也尝试了多种方法来解决此问题,但是没有人通过我。 感谢您的帮助。

我的书本模式

const BookSchema = new Schema({

    tenant: {
        type: Schema.Types.ObjectId,
        ref: 'user'
    },

    ...

    offer: {
        type: Schema.Types.ObjectId,
        ref: 'offer'
    }
});

const BookModel = mongoose.model('books', BookSchema);
module.exports = BookModel;

我的报价模式

const OfferSchema = new Schema({
    ...

    author: {
        type: Schema.Types.ObjectId,
        required: true,
        ref: 'user'
    }
});

const OfferModel = mongoose.model('offers', OfferSchema);

module.exports = OfferModel;

我如何获得结果

const landlord = req.userData.userId;

Book.find().populate('tenant', 'email').populate({
    path: 'offer',
    match: {
        'author': {
            $eq: landlord
        }
    }
}).then(books => {
    res.status(200).json({books: books})
}).catch(err => {
    console.log(err);
    res.status(500).json({error: err.message})
});

1 个答案:

答案 0 :(得分:0)

我以不同的方式解决了我的问题。

现在,我正在搜索像这样的当前用户的预订优惠,希望将来对某人有用。

%ifdef