我有一个对象架构
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})....
请提出如何通过查询参数执行“开始于”操作的“查找”操作。
答案 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);
});