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

How to construct mongoose Find from url 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"
}

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

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

此 API 调用预计 return 所有名称以 "Jung"

开头的图书

在我的 experess 实现中,我有

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

请建议如何从查询参数执行 'find' 和 'starts with' 操作。

Mongoose 支持正则表达式,所以另一个选项是:

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