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
});
});
});
这是我得到的错误:
我找到了解决方案,而且非常简单。看来我昨天真的很接近。
我在集合中执行填充方法 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);
我正在尝试在 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
});
});
});
这是我得到的错误:
我找到了解决方案,而且非常简单。看来我昨天真的很接近。
我在集合中执行填充方法 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);