如何从 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);
});
我有一个对象模式
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);
});