Express 如何从url查询字符串构造mongoose Find?

Express 如何从url查询字符串构造mongoose Find?,express,mongoose,find,query-string,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?nam

我有一个对象模式

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”开头的所有书籍

在我的Express实现中,我

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

请建议如何从查询参数执行带“start with”的“find”操作。

Mongoose支持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);
});

谢谢我尝试了两种选择。我成功地使用了选项1和RegExp。不知道为什么我没有成功的选择2。