mongoose 實現DBRef尋找所有子類資訊,mongoosedbref
產品表
var Mongoose = require('mongoose');var Schema = Mongoose.Schema;var Product = new Schema({ image : { type : String }, description : { type : String }, price : { type : Number, require : true }, probability : { type : Number, require : true }, status :{ type : Number, require : true, default : 1 }, categoryId:{ type:String, require:true }, name : { type :String, require : true }},{ _id : true, autoIndex : true});module.exports = Mongoose.model('Product',Product);
產品分類表
var Mongoose = require('mongoose');var Schema = Mongoose.Schema;var Category = new Schema({ child : [{ type : Schema.Types.ObjectId, ref : 'Product' }], name : { type : String, require : true }, description : { type : String, require : true }, image : { type : String, require : true }},{ _id : true, autoIndex : true});module.exports = Mongoose.model('Category',Category);
我們在每添加一個商品的時候把該商品的id插入category中
var product = new Product({ name : '侏羅紀咖啡', image : '/3.jpg', descript : '還算可以', price : 50.00, probability : 100, status : 1, categoryId : "552f76bd3e0b2dfca7989da3" }) product.save(function(err){ if(err){ console.log(err); }else{ Category.find({_id:"552f76bd3e0b2dfca7989da3"},function(err,result){ result[0].child.push(product._id); result[0].save(function(err){ console.log('ok!') }) }) } })
在尋找一個分類資訊時同時找到它對應的多有商品的資訊
Category.find().populate('child').exec().then(function(result){ console.log(result); })
我們來看下輸出結果:
[ { _id: 552f76bd3e0b2dfca7989da3, image: '/1.jpg', description: '我們的咖啡來自巴西,安全無公害,幹吃,泡著吃都行', name: '咖啡', __v: 7, child: [ { _id: 552f76a9b396a1e8651bba8d, status: 1 }, { _id: 552f76ff61d8370ba8490ceb, name: '暴龍咖啡', image: '/1.jpg', price: 20, probability: 100, categoryId: '552f76bd3e0b2dfca7989da3', __v: 0, status: 1 }, { _id: 552f773a12831318a8d51ce4, name: '劍齒龍咖啡', image: '/2.jpg', price: 15, probability: 100, categoryId: '552f76bd3e0b2dfca7989da3', __v: 0, status: 1 }, { _id: 552f776a87443f28a8e66931, name: '霸王龍咖啡', image: '/3.jpg', price: 15, probability: 100, categoryId: '552f76bd3e0b2dfca7989da3', __v: 0, status: 1 }, { _id: 552f777f87443f28a8e66932, name: '霸王龍咖啡', image: '/3.jpg', price: 15, probability: 100, categoryId: '552f76bd3e0b2dfca7989da3', __v: 0, status: 1 }, { _id: 552f77846a87b934a8a45cfa, name: '翼龍咖啡', image: '/3.jpg', price: 25, probability: 100, categoryId: '552f76bd3e0b2dfca7989da3', __v: 0, status: 1 }, { _id: 552f779cad597a3fa8365f63, name: '小雞咖啡', image: '/3.jpg', price: 250, probability: 100, categoryId: '552f76bd3e0b2dfca7989da3', __v: 0, status: 1 }, { _id: 552f77ac294f5d4ba8006b27, name: '侏羅紀咖啡', image: '/3.jpg', price: 50, probability: 100, categoryId: '552f76bd3e0b2dfca7989da3', __v: 0, status: 1 } ] } ]