尝试使用mongoose从其他模型填充doc会返回一个空数组

时间:2018-04-24 07:27:08

标签: node.js mongodb mongoose

这里是具有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
}

0 个答案:

没有答案