Admin on Rest Mongoose兼容查询

时间:2017-09-18 15:06:47

标签: reactjs express mongoose admin-on-rest

我正在使用Admin on Rest为我的其余通话创建一个仪表板。 电话正在通过,我在控制台中查看了电话。

GET / api / v2 / admin / user?_end = 10& _order = DESC& _sort = id& _start = 0 200 61.102 ms - 2846

但它没有返回任何内容,我认为是因为Mongo不接受_end,_order,_start的查询,以及它使用_id而不是id。 对此最好的解决方法是什么?因为我无法修改进入的电话。

端点的逻辑如下。我(也没有想象)尝试手动创建排序选项,但我觉得这样做效率不高。

// routes/admin/user.js
var express = require('express'),
    router = express.Router();

var User = require(__models + 'user');

router.route('/')
.get(function(req, res, next){
  var query = req.query || {};

  User.find(query).then(users => {
    return res.json(users);
  }).catch(err => next(err));
});

module.exports = router;

2 个答案:

答案 0 :(得分:1)

您需要编写自己的REST客户端,以便以REST API理解的格式创建查询。

https://marmelab.com/admin-on-rest/RestClients.html#writing-your-own-rest-client

答案 1 :(得分:0)

我为我创建了一个util函数。

module.exports.getJsonFromUrl = function(query) {
  var result = {};
  query.split("&").forEach(function(part) {
    var item = part.split("=");
    result[item[0]] = decodeURIComponent(item[1]);
  });
  return result;
};

我从控制器这样调用它

var query = routeUtil.getJsonFromUrl(req._parsedUrl.query);