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

时间:2017-02-09 11:28:34

标签: node.js mongodb express mongoose

我正在构建一个搜索查询,即使在用户输入时,它也会通过其ID找到数据库对象。

term

这里的问题是,当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 } });

的ID

编辑:我的订单模型架构

function Allowance(select){
   if(select.value=='Allowance'){   
     document.getElementById('tuition_fee').style.display = "none";
     document.getElementById('school_supply').style.display = "none";
     document.getElementById('allowance').style.display = "block";
   }else{
    document.getElementById('allowance').style.display = "none";
   }
} 
function Tuition(select){
  if(select.value=='Tuition Fee'){
    document.getElementById('allowance').style.display = "none";
    document.getElementById('school_supply').style.display = "none";
    document.getElementById('tuition_fee').style.display = "block";
   } else{
    document.getElementById('tuition_fee').style.display = "none";
   }
} 
function Supply(select){
  if(select.value=='School Supply'){
    document.getElementById('allowance').style.display = "none";
    document.getElementById('tuition_fee').style.display = "none";
    document.getElementById('school_supply').style.display = "block";
   } else{
    document.getElementById('school_supply').style.display = "none";
   }
} 

1 个答案:

答案 0 :(得分:1)

您可以使用正则表达式运行查询,即使用 RegExp 构造函数从字符串创建正则表达式对象,然后运行查询:

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