我的架构如下:
order.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var foodtruck = require('./foodtruck.js');
var payment = require('./payment.js');
var Items = require('./items.js');
var order = new Schema({
order_status:Number, //0 place 1 accepted 2 cooked 3 cancelled
foodtruck_id:{type:Schema.Types.ObjectId,ref: 'foodtruck'},
customer_id:{type: Schema.Types.ObjectId,ref: 'user'},
items:[{type : Schema.Types.ObjectId, ref : 'items'}],
user_type:Boolean,
order_time:Date,
order_rating:{type:Number,default:5.0},
order_issue_comments:String,
order_special_instruction:String,
order_total:Number,
order_location:String,
order_coupon_code:String,
payment_id:{type:Schema.Types.ObjectId,ref:'payment'}
},{ versionKey: false });
module.exports = mongoose.model('order',order);
foodtruck.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var Items = require('./items.js');
var FoodTruckSchema = new Schema({
foodtruck_name:String,
foodtruck_location:String,
foodtruck_rating:{type:Number,default:5},
foodtruck_total_votes:{type:Number,default:0},
foodtruck_tag:String,
foodtruck_open_status:{type:Number,default:1}, //0 open 1 closed
foodtruck_starting_timing:String,
foodtruck_closing_timing:String,
foodtruck_cusine:String,
foodtruck_img:String,
foodtruck_logo:String,
item_list: [ {type : mongoose.Schema.ObjectId, ref : 'items'}]
},{ versionKey: false });
module.exports = mongoose.model('foodtruck',FoodTruckSchema);
items.js
var mongoose = require('mongoose');
var Schema = mongoose.Schema;
var ItemSchema = new Schema({
no_of_times_ordered:Number,
item_name:String,
item_tag:String,
item_category:String,
item_illustrations:[String],
item_stock:Number, //0 available 1 last 5 items 2 not available
item_quantity_ordered:{type:Number,default:0},
item_discount_price:Number,
item_price:Number,
item_img:String,
no_of_likes:{type:Number,default:0}
},{ versionKey: false });
module.exports = mongoose.model('items',ItemSchema);
现在我的查询如下所示:
var getOrderList = function(req, res) {
var foodtruck_id = req.body.foodtruck_id;
if ((foodtruck_id) && (foodtruck_id.trim() != '')) {
order.find({
'foodtruck_id': foodtruck_id.trim()
}).populate('foodtruck_id').populate('customer_id').populate('items').exec(function(err, orderList) {
if (err) res.json({
status: '500',
message: 'There was no order found'
});
else {
res.json({
status: '200',
message: 'Order list',
data: orderList
});
}
});
} else {
res.json({
status: '404',
message: 'Please enter valid id'
});
}
};
现在,当我为“foodtruck_id”添加populate查询时,它会显示附带的item_list。在填充 foodtruck_id 查询时,有什么办法可以隐藏 item_list 字段吗?
答案 0 :(得分:0)
1。 填充后,您可以使用' - 排除密钥。
.populate({path:foodtruck_id,select:'-item_list')
如果您想选择任何特定的关键示例,您只需 foodtruck_name 。 你可以这样做
.populate({路径:foodtruck_id,选择: 'foodtruck_name')
要了解有关填充的更多信息,您可以访问mongoose doc