我有這條路徑用於搜索orderId
的部分用戶輸入。Mongoose:如何查詢填充內的對象?
ordersAdminRouter.route('/searchorder/:term')
.get(function(req, res){
term = req.params.term;
console.log(term);
Orders.find({orderId: new RegExp(term)})
.populate({ path: 'userPurchased products.product', select: '-username -password' })
.exec(function(err, orders){
if (err) throw err;
console.log(orders);
res.json(orders);
});
});
這裏是我的架構
var orderSchema = new Schema({
orderId: { type: String },
userPurchased: { type: Schema.Types.ObjectId, ref: 'users' },
products: [
{
product: { type: Schema.Types.ObjectId, ref: 'products' },
size: { type: String, required: true },
quantity: { type: Number, required: true },
subTotal: { type: Number, required: true }
}
],
totalQuantity: { type: Number },
totalPrice: { type: Number },
modeOfPayment: { type: String },
shippingAd: { type: String },
refNumber: { type: String },
isDone: { type: Boolean, default: false },
orderStatus: { type: String, default: 'Pending' },
dateOrdered: { type: Date, default: Date.now() },
fromNow: { type: String }
});
現在我需要尋找內userPurchased名字和姓氏時,我填充我只得到。如何搜索它?
@ThomasBormans我認爲方法是不是很好的表現明智的。我需要獲取db上的所有內容,然後每隔400ms進行一次過濾,這是我的搜索輸入實現。我的訂單數據庫非常大,因此有時需要10secs,因爲base64編碼的圖像。那麼如果沒有其他辦法,那麼我沒有選擇。 –
你是絕對正確的,但問題是相同的(我認爲)。這就是我將其標記爲重複的原因。 –