Mongoose 如何隐藏通过填充查询提取的特定字段
我的架构如下: order.jsMongoose 如何隐藏通过填充查询提取的特定字段,mongoose,mongoose-schema,mongoose-populate,Mongoose,Mongoose Schema,Mongoose Populate,我的架构如下: 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
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”进行填充查询时,它还显示了附加的项列表。在填充foodtruck\u id查询时,是否有任何方法可以隐藏项目列表字段?1。
您可以使用'-'在填充后排除键
.populate({path:foodtruck_id,select:'-item_list')
要了解有关填充的更多信息,请访问Hey@Shumi,我们如何从对象数组中排除字段?