Breeze Json uriBuilder

Breeze Json uriBuilder

我正在尝试将 breeze.js 与 sails.js 一起使用。

因此我正在使用 breeze json uriBuilder。 我登录了 req.query 并得到以下信息:

{ '{"where":{"name":"foo"},"orderBy":': { '"name"': '' } }

要查询水线 objects,我需要将其转换为如下格式:

{ where: { name: 'foo' }, sort: 'name' }

我尝试的第一件事:

var queryString = JSON.parse(Object.keys(req.query)[0]);

只要我只放入一个 where 子句,它就可以工作。但是有了更多的参数,我得到了这个奇怪的格式 json object。 我怎样才能解析它以获得正确的 object?

解决方案:

不要解析他 req.query。解析 url 并解析它。通过这种方式,您将获得 sails 接受的 json 请求。现在将不受支持的参数剥离为 select,你就完成了。

var parsedUrl = urlUtils.parse(req.url, true);

var jsonQueryString = Object.keys(parsedUrl.query)[0];
var jsonQuery = JSON.parse(jsonQueryString);

好问题!我们还没有充分记录这一点,但基本思想是有一个 breeze-client npm 包(https://www.npmjs.com/package/breeze-client),您可以使用它来将传入的 json 查询解析为 breeze EntityQuery 实例,从那里您可以询问 EntityQuery 并将其转换为您想要的任何服务器端语法,即在您的情况下是 Sails。)

// req = the HTTP request object.
var resourceName = req.params.slug; // the HTTP endpoint
var entityQuery = breeze.EntityQuery.fromUrl(req.url, resourceName);
// you would write the transform to sails below.
var sailsQuery = tranformToSails(entityQuery);

这正是我们在 breeze-sequelize npm 包中所做的,我们在其中接收传入的 req.query 并通过上述过程创建一个 'Sequelize' 查询。

http://www.getbreezenow.com/sequelize-mysqlpostgressql-lite