我想设置一些更复杂的路由,其中可以包含许多可选参数.优选地,我想使用命名参数以便于访问.这是我想要实现的一个例子:
// The following routes should be matched based on parameters provided:
// GET /books/:category/:author
// GET /books/:category/:author/limit/:limit
// GET /books/:category/:author/skip/:skip
// GET /books/:category/:author/limit/:limit/skip/:skip
// GET /books/:category/:author/sort/:sortby
// GET /books/:category/:author/sort/:sortby/limit/:limit
// GET /books/:category/:author/sort/:sortby/skip/:skip
// GET /books/:category/:author/sort/:sortby/limit/:limit/skip/:skip
app.get('/books/:category/:author/(sort/:sortby)?/(limit/:limit)?/(skip/:skip)?', myController.index);
Run Code Online (Sandbox Code Playgroud)
如您所见,我正在尝试将可选参数分组(paramKey/paramValue)?.这样我希望能够"混合和匹配"可选参数,同时仍然使用参数命名.不幸的是,这似乎不起作用.
有没有办法让这个工作,而不必编写直接的正则表达式和添加额外的逻辑来解析任何结果的基于索引的参数组?
基本上,我正在寻找一种简单的方法来解析路由中的键/值对.
我正在使用 JPA 和 Querydsl 根据通过 REST API 传入的条件动态构建查询。在大多数情况下,这工作正常,但我不确定根据外键列中的值查询实体的最佳方法是什么。
为了说明该场景,请考虑以下(简化的)实体。
@Entity
@Table(name = "division")
public class Division {
@Id
private Long id;
@Column(unique = true)
private String uniqueKey;
@OneToMany(mappedBy = "division")
private List<DivisionGroup> groups;
}
@Entity
@Table(name = "division_group")
public class DivisionGroup {
@ManyToOne
@JoinColumn(referencedColumnName = "uniqueKey")
private Division division;
}
Run Code Online (Sandbox Code Playgroud)
请注意,该 Division 不是被引用id而是被引用uniqueKey。让我们说我有这样做的理由。
现在,我想运行如下查询:
select * from division_group where division = 'someUniqueKey'
Run Code Online (Sandbox Code Playgroud)
看起来很简单,但使用 JPA 需要连接和知道哪个字段包含外键值(uniqueKey在这种情况下)。我想 JPA 查询看起来类似于方法 1。
请注意,我没有使用任何生成的 Q 类型,因为这些类型是根据请求动态确定的。
方法 1 - …
我正在尝试在新服务器上运行我的节点应用程序,并且遇到NODE_PATH环境变量的一些问题.该应用程序在我的本地计算机(OSX Lion)上运行良好,但在服务器(Redhat linux)上运行不正常.node app.js从我的项目目录中启动我的应用程序时/development/nodeproject,我收到以下错误:
Error: Cannot find module 'mod/core/models/Category'
at Function._resolveFilename (module.js:334:11)
at Function._load (module.js:279:25)
at Module.require (module.js:357:17)
at require (module.js:368:17)
at /development/nodeproject/app.js:57:5
at Object.<anonymous> (/development/nodeproject/app.js:258:1)
at Module._compile (module.js:432:26)
at Object..js (module.js:450:10)
at Module.load (module.js:351:31)
at Function._load (module.js:310:12)
Run Code Online (Sandbox Code Playgroud)
mod/core/models/Category是我的app.js中的第一个require(),看起来像这样:var Category = require('mod/core/models/Category').所以显然节点不在我的项目目录中寻找模块.
我不确定为什么,因为我做了以下更改(在我的本地机器上运行正常).
export NODE_PATH=/development/nodeproject到我的〜/ .bash_profilesource ~/.bash_profileenv我看到NODE_PATH=/development/nodeproject那里列出process.env.NODE_PATH我得到/development/framework(这应该输出一个数组而不是一个字符串吗?)其他可能相关的信息:
在这一点上,我不确定我还能做些什么.任何帮助将不胜感激.
我正在尝试将图像大小调整为给定宽度,高度按比例调整 - 无论图像是横向还是纵向.
我有两个图像我测试了ImageMagick convert -resize命令和我读过的内容,我希望以下内容适用于任何类型的图像:
convert source.jpg -resize 200 out.jpg
问题是,它没有.这是我的结果:
landscape,3264?×?2448调整大小以200?×?150==> WORKSportrait,, 3240?×?4320调整为150?×?200==> 失败现在,我知道我可以通过预先读取源图像尺寸并对命令进行调整来修复此问题(例如,使用x200 for portrait似乎将宽度正确设置为200)但我不禁认为必须有让ImageMagick处理这个的方法.
我阅读了文档并搜索了答案,但似乎无法解决这个问题.任何帮助是极大的赞赏.
编辑:
我尝试了以下变化,但得到了相同的错误结果:
convert source.jpg -resize 200x out.jpg
FIX:
convert source.jpg -auto-orient -resize 200 out.jpg