Я создаю поисковый запрос, где он найдет объект базы данных по его идентификатору, даже когда пользователь печатает.Mongoose: Как найтиById, когда запрос не завершен
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
?
EDIT: Моя модель заказа Схема
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 }
});
findById ожидает, что ID (тип ObjectID не является ни строкой, ни целым, ни что-либо еще) в качестве параметра, поэтому почему вы даже пытаетесь дать ему что-то еще? Я не думаю, что вы действительно можете это сделать. Лучший способ, который я могу придумать, - дать каждому заказному идентификатору типа String, который вы могли бы использовать, чтобы найти только часть идентификатора. – Molda
, поэтому я могу использовать find, даже если это лишь частичный текст, когда я делаю свой ID строкой? –
Как я могу это сделать? Просто обычный запрос на поиск? –