2016-06-16 87 views
1

我的问题是,当我find() and print我的项目,数组不显示。这是一个问题,因为我需要发送我的API。如何从参考文件与猫鼬

在这里,结果我得到:

{ 
     "_id": "576287e5a3536e670a39f3f2", 
     "__v": 0, 
     "products": [], 
     "name": "SISI CEST ICI" 
    }, 
    { 
     "_id": "5762897e3032fe7c0a1d2408", 
     "__v": 0, 
     "products": [], 
     "name": "hElo la mif" 
    } 

这是我如何得到这样的结果:

var response = {}; 
    mongoose.cat.find({},function(err,data){ 
    console.log(data); 
// Mongo command to fetch all data from collection. 
    if(err) { 
     response = {"error" : true,"message" : "Error fetching data"}; 
    } else { 
     response = {"error" : false,"message" : data}; 
    } 
    res.json(response); 
}); 

这个模型看起来是这样的:

var category = new mongoose.Schema({ 
    id: mongoose.Schema.ObjectId, 
    name: { type: String, default: '' }, 
    products: [ {type : mongoose.Schema.ObjectId, ref : 'Product'} ] 
}); 

var product = new mongoose.Schema({ 
    id: mongoose.Schema.ObjectId, 
    name: { type: String, default: '' }, 
    price: { type: Number, default: '' } 
}); 

var restoModel = mongoose.model('Resto', resto); 
var MenuModel = mongoose.model('Menu', menu); 
var CategoryModel = mongoose.model('Category', category); 
var ProductModel = mongoose.model('Product', product); 



module.exports = { 
    resto: restoModel, 
    menu: MenuModel, 
    cat: CategoryModel, 
    product: ProductModel 
} 

而在我的数据库,该字段的产品不是空的,屏幕上可以显示:

what i want to show

所以我的问题是:如何访问我的产品阵列中的数据?因为我需要他们发回。

我试过"Populate query"但它没有给任何东西。

我的问题是,怎么能有一个JSON格式的所有数据从我的主类?

回答

0

//category.js

var mongoose = require('mongoose'); 

var CategorySchema = new mongoose.Schema({ 
    name: { type: String, default: '' }, 
    products: [{productID: {type : mongoose.Schema.Types.ObjectId, ref :  'Product'}}] 
}); 

module.Category = mongoose.model("Category", CategorySchema); 

//product.js

var mongoose = require('mongoose'); 

var ProductSchema = new mongoose.Schema({ 
    name: { type: String, default: '' }, 
    price: { type: Number, default: 0 } 
}); 

module.Product = mongoose.model("Product", ProductSchema); 

//一些文件

var Product = require('./Product').Product, 
    Category = require('./Category').Category; 

var product = new Product({ 
    name: "Some name", 
    price: 100 
}); 

product.save(function(err){ 
    if(err) throw err; 
}); 


*//creating* 
var category = new Category({ 
    name: "Some name", 
    products: [{ 
     productID: product._id 
    },{ 
.....///and so on..... 
    }] 
}); 

*//saving* 
category.save(function(error) { 
    if (!error) { 
     Category.find({}) 
      .populate('products.productID') 
      .exec(function(error, cats) { 
       console.log(JSON.stringify(cats, null, "\t")) 
      }) 
    } 
}); 

我希望它可以帮助你。

+0

Category.find.populate显示与Category.find()相同的数据 – Gabson