我正在创建一个API,我在其中获取数据或者数字或名称。
var method = require("../../app/models/model_METHOD.js");
module.exports = (function(){
'user strict';
var router=require('express').Router();
router.get('/search',function (req,res) {
var name = req.query.name;
var number = req.query.number;
var query = {};
if(name){
var pattern = new RegExp(name,"i");
query = {Name: {$regex: pattern}},{Name:1,_id:0};
method.find(query).lean()
.limit(20)
.exec(function(err,results){
results=results.map(function(doc){return doc.Name});
if(err){
console.log("DB error");
console.log(err);
res.status(500).send("Error");
}
else if(results.length!=0){
console.log(results.length);
res.status(200).send(results);
}
else{
res.status(404).send('no matching records found');
}
});
}
else if(number){
var pattern = new RegExp(number,"i");
console.log(pattern);
query = {Number: {$regex: pattern}},{Number:1,_id:0,Code:0,Name:0,collection:0};
method.find(query).lean()
.limit(20)
.exec(function(err,results){
results = results.map(function(item){return item.Number});
if(err){
console.log("DB error");
console.log(err);
res.status(500).send("Error");
}
else if(results.length!=0){
console.log(results.length);
res.status(200).send(results);
}
else{
res.status(404).send('no matching records found');
}
});
}
else{
res.status(400).send('input can not be empty');
}
});
我正在设置调用这些api的URL,如下所示: -
function getName(key) {
return $http({
method: 'GET',
url: 'api/method/search?name=' + key.key
});
}
function getNumber(key) {
return $http({
method: 'GET',
url: 'api/method/search?number=' + key.key
});
}
虽然上面的方法对我有用但是我可以在一个URL中调用它,而不是创建两个不同的函数,如果它的名称是name=' + key.key
,那么如果数字是number=' + key.key
。
这样的事情: - 'api/method/search?name=' + key.key or number=' + key.key
答案 0 :(得分:1)
是的,调用相同的方法并传递类型为
的字符串function get(key, type) {// type will have to be either "name" or "number"
return $http({
method: 'GET',
url: 'api/method/search?' + type + '=' + key.key
});
}