find(...).populate 不是 mongoose 中的函数

find(...).populate is not a function in mongoose

我正在尝试在 mongoose 和 node 中填充两个表,但收到填充不是函数的错误。

我搜索了一下,在文档中好像和我一样。

这里是模型:

var mongoose = require('mongoose');
var dodleSchema = new mongoose.Schema({
    name: String,
    productorId: {type: mongoose.Schema.ObjectId, ref: "Productor"},
    description: String,
    ambassadorId: {type: mongoose.Schema.ObjectId, ref: "Ambassador"},
    accepted: { type: Boolean, default: false },
    read: { type: Boolean, default: false },
    deliveryAddress: {
        lat: String,
        lng: String
    },
    createdAt: Date,
    products: [
        {
            primaryImage: String,
            images: [],
            name: String,
            max: Number,
            min: Number,
            step: Number,
            stock: Number,
            normalPrice: Number,
            doodlePrice: Number,
            freeShipping: Boolean,
            freeShippingFrom: Number
        }
    ],
    endsAt: Date,
    packagingType: String,
    orders: [
        {
            name: String,
            email: String,
            purchases: [
                {
                    productId: String,
                    quantity: Number
                }
            ]
        }
    ]
});
module.exports = mongoose.model('Doodle', dodleSchema);

然后是我使用的 find:

router.route('/requests/:id')
.get(function (req, res) {
    doodleCollection
        .find({
            ambassadorId: new mongodb.ObjectID(req.params.id),
            read: false
        })
        .populate('productorId')
        .toArray(function (error, results) {
            if (error) {
                res.json({'error': "Ha habido un error en la extracción de requests"});
                return false;
            }

            var alertNew = false;

            for (var i = 0; i < results.length; i++) {
                if (results[i].read == false) {
                    readed = true;
                    break;
                }
            }

            res.json({
                requests: results,
                alertNew: alertNew
            });
    });
});

这是我得到的错误:

Error

我找到了解决方案,而且非常简单。看来我昨天真的很接近。

我在集合中执行填充方法 doodleCollection,我需要在模型中执行。

更改使查找完全有效的对象。

现在我调用 doodleModel.find(...) 而不是 doodleCollection.find(...) 并且填充工作完美!

我正在使用以下内容,它给我 null 作为数据:-

let PostModel = mongoose.model('Post');

然后我将其更改如下,填充方法有效:-

let PostModel = require("../model/post.js"); //path to your post model

确保从 post.js 模型文件中导出模型,如下所示:-

module.exports = mongoose.model('Post', PostSchema);