如何从URL查询字符串构造猫鼬查找?

时间:2018-07-08 07:04:09

标签: express mongoose find query-string

我有一个对象架构

var book = new Schema ({
 name: {type: String},
 code: {type: String}
});

Sample content is 
{
  name: "Jungle Book",
  code: "Jungle"
}
{
  name: "Java Book",
  code: "Java"
}

我对Express服务器有一个http GET请求

http://localhost:port/api/book?name=Jung

预计该API调用将返回名称以“ Jung”开头的所有图书

在我的实验实施中,我有

exports.getBooks = function(req, res, next) {
  var query = require('url').parse(req.url, true).query;

  Book.find({"name": /^query.name/}).exec(function(err, books){
    if(err){ res.status(400).json(
           { success: false, 
             message: 'Error processing request '+ err
           }); 
         }
    res.status(201).send(books);
  });
};

我收到一个空数组,搜索失败。但是,当我进行完全匹配时,如下所示。

Book.find({"name": query.name})....

请提出如何通过查询参数执行“开始于”操作的“查找”操作。

1 个答案:

答案 0 :(得分:0)

猫鼬支持regexp,所以另一个选择是:

let regexp = new RegExp("^" + query.name);
Book.find({ name: regexp });

或尝试:

let data = {"name": /^query.name/};

Book.find(data, function(err, books) {
    if(err) {
        res.status(400).json({
            success: false, 
            message: 'Error processing request ' + err
        }); 
    };
    res.status(201).send(books);
});