Mongoose:查询未完成时如何查找.ById

我正在构build一个search查询,即使在用户input的时候,它也会通过它的IDfind一个数据库对象。

ordersRouter.route('/searchorder/:term') .get(function(req, res){ term = req.params.term; console.log(term); Orders.findById(term) .populate({ path: 'userPurchased products.product', select: '-username -password' }) .exec(function(err, orders){ if (err) throw err; res.json([orders]); }); }); 

这里的问题是,当这个term和ID不完全一样时,它什么都不会返回。 我怎样才能返回部分term ID?

编辑:我的订单模式架构

 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 } }); 

您可以使用正则expression式运行您的查询,即使用RegExp构造函数从string中创build一个正则expression式对象,然后运行查询:

 ordersRouter.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; res.json(orders); }); });