这里是具有ref
属性声明的模型:
"use strict"
const mongoose = require('mongoose');
const Schema = mongoose.Schema;
const catSchema = new Schema({
catId: String,
1: {
cat: String,
_id: String,
subcat: [String],
_products: {
type: Schema.ObjectId,
ref: 'electronics_model',
required: true
}
}
});
let catModel = mongoose.model('categories_model', catSchema);
module.exports = catModel;
以上模型已经实例化,没有问题。上述模型的_products
属性被赋予electronics_models
模型的objectId以便我可以填充整个模型。
但问题在于调用mongoose的填充方法的路线。
这是路线:
localhost:3000/product-by-category?cat=electronics
代码:
app.get('/product-by-category', function(req, res){
db.catModel.find({cat: req.query.cat}).populate({
path: '_products'
}).then(function(data){
res.send(data);
}).catch(function(err){
res.send(err);
});
});
它返回一个空数组。我无法弄清楚根本原因是什么。
我想要涉及的两个文件:
categories_models:
> db.categories_models.find().pretty()
{
"_id" : ObjectId("5ade178e1b39645d85f0e40d"),
"1" : {
"subcat" : [
"mobiles",
"laptops",
"televisions",
"cameras",
"mobile accessories"
],
"cat" : "electronics",
"_id" : "#electronics",
"_products" : ObjectId("5ade178e1b39645d85f0e40a")
}
}
electronics_models:
> db.electronics_models.find().pretty()
{
"_id" : ObjectId("5ade178e1b39645d85f0e40a"),
"mobiles" : [
{
"highlights" : [ ],
"_id" : ObjectId("5adf05b363b13330b9fef397"),
"brand" : "asus",
"model" : "zenfone 2 laser",
"price" : 9999,
"currency" : "rs",
"description" : "very good phone for fairly cheap price"
}
],
"laptops" : [ ],
"televisions" : [ ],
"cameras" : [ ],
"mobile_accessories" : [ ],
"searchId" : "#electronic_products",
"__v" : 5
}