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。