我的服务中有以下代码:
var currentDate = new Date();
return this._authHttp
.get(
`localhost:3000/listJobs?filter={"where": {"expireDate":{"$gte": new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDay())}}}`
)
.map((res: Response) => res.json())
.catch(this.handleError);
和我的API:
module.exports.listJobs = (req, res) => {
var queryFilter = {};
let condition = {};
if (req.query.filter) {
queryFilter = JSON.parse(req.query.filter);
}
if (queryFilter.where) {
condition = queryFilter.where;
}
myCollection.find(condition).exec(function (err, result) {
if (err) {
sendJsonResponse(res, 400, err);
} else {
sendJsonResponse(res, 200, result);
}
});
};
我想要做的是:拥有支持动态查询过滤器的通用API路由,假设在另一个条件中我在我的服务中有另一个函数将不同的过滤器传递给同一路由。
我想知道的是我们如何通过ObjectId(), new Date(), etc...
?
答案 0 :(得分:0)
也许,尝试在服务中发送一个带过滤属性的对象
如果我理解正确,你使用Angular 2编写客户端部分。
示例:
let params: URLSearchParams = objToSearchParams(obj);
return this.http.get('url', {
search: params
}).subscribe(
(response) => //some manipulation with response
);
function objToSearchParams(obj): URLSearchParams{
let params: URLSearchParams = new URLSearchParams();
for (var key in obj) {
if (obj.hasOwnProperty(key))
params.set(key, obj[key]);
}
return params;
}