小编Gab*_*man的帖子

组织myapp/routes/*的正确方法

使用最新的稳定node.js并从npm表达,我创建了我的第一个快速项目.

默认生成的应用程序定义routes/index.js,其中包含呈现默认索引视图的单个路径.

我立即假设我可以将其他.js文件添加到routes /文件夹中,它们将被包含在内.这并没有成功.只包含routes/index.js.添加其他路由到routes/index.js工作正常.

按照快速项目生成器提供的结构,定义和组织Express路由的正确方法是什么?


答案,解释DailyJS上的文章:

鉴于以下路线:

app.get('/', function() {});
app.get('/users', function() {});
app.get('/users/:id', function() {});
Run Code Online (Sandbox Code Playgroud)

...创建以下文件:

routes/
??? index.js
??? main.js
??? users.js
Run Code Online (Sandbox Code Playgroud)

然后,在routes/index.js里面:

require('./main');
require('./users');
Run Code Online (Sandbox Code Playgroud)

对于每个新的相关路由组,在routes /中创建一个新文件,并从routes/index.js中输入require().将main.js用于不适合其他文件的路由.

routes node.js express

29
推荐指数
1
解决办法
9820
查看次数

我应该如何使用Hibernate从JPQL查询中引用内部枚举(在实体中定义)?

我有一个实体类如下:

package stuff;

@Entity
class Thing {

    @Id
    @GeneratedValue 
    private Long id;

    @Basic
    @Enumerated
    private State state;

    public enum State {
        AWESOME,
        LAME
    }
}
Run Code Online (Sandbox Code Playgroud)

如何使用JPQL和Hibernate选择状态为AWESOME的所有东西?

select t from Thing t where t.state=stuff.Thing.State.AWESOME
Run Code Online (Sandbox Code Playgroud)

......给出错误......

org.hibernate.hql.internal.ast.QuerySyntaxException: Invalid path: 'stuff.Thing.State.AWESOME'
Run Code Online (Sandbox Code Playgroud)

java enums hibernate jpa jpql

12
推荐指数
1
解决办法
1977
查看次数

Jersey客户端可以自动将POJO实体编码为application/x-www-form-urlencoded,还是需要编写自定义MessageBodyWriter?

我使用Jersey的Client类和Jackson一起调用RESTful Web服务来处理与JSON的序列化.我也在使用该JSONConfiguration.FEATURE_POJO_MAPPING设置让Jackson自动将我的POJO序列化为JSON.

我正在发送我的POJO进行消费MediaType.APPLICATION_FORM_URLENCODED和生产的远程服务MediaType.APPLICATION_JSON_TYPE.

我是否必须创建自己的MessageBodyWriter实现来处理POJO序列化application/x-www-form-urlencoded,或者Jersey是否提供了使用我的POJO注释为我执行此操作的实现?

java rest web-services jax-rs jersey

7
推荐指数
1
解决办法
1738
查看次数

从Cloud Code,我如何查询与一组用户匹配的安装?

我正在使用独立的Parse服务器,尝试向多个安装发送推送通知.

解析服务器不允许我从Cloud Code查询安装集合,返回以下错误:

Error handling request: ParseError {
  code: 119,
  message: 'Clients aren\'t allowed to perform the find operation on the installation collection.' } code=119, message=Clients aren't allowed to perform the find operation on the installation collection.
Run Code Online (Sandbox Code Playgroud)

Cloud Code中的查询如下所示:

var pushQuery = new Parse.Query(Parse.Installation);
pushQuery.containedIn('user', users);
pushQuery.find({ ...
Run Code Online (Sandbox Code Playgroud)

获取一组用户的安装列表并将推送发送到所有用户的正确方法是什么?

我还尝试通过Parse.Cloud.useMasterKey();在查询之前立即调用来使Cloud Code使用masterKey .没有效果,主密钥不包含在查询请求标头中.

parse-cloud-code parse-server

7
推荐指数
1
解决办法
690
查看次数

从 Java 调用 Kotlin 挂起函数

我有一个 Kotlin 库,我试图从 Java 调用它。我以前没有使用过 Kotlin。

Kotlin库函数如下:

suspend fun decode(jwt: String): UsefulThing {
    // does a bunch of stuff, removed for brevity.
    return otherthing.getUsefulThing(jwt)
}
Run Code Online (Sandbox Code Playgroud)

我如何从 Java 中调用它?到目前为止我已经尝试过:

Continuation<UsefulThing> continuation = new Continuation<>() {

    @NotNull
    @Override
    public CoroutineContext getContext() {
        return EmptyCoroutineContext.INSTANCE;
    }

    @Override
    public void resumeWith(@NotNull Object o) {
        System.out.println("Result of decode is " + o);
    }

};

// Call decode with the parameter and continuation.
Object result = UsefulThingKt.decode(JWT, continuation);

// result is COROUTINE_SUSPENDED
Run Code Online (Sandbox Code Playgroud)

我从未看到任何控制台输出。看起来延续从未被调用,或者它在另一个上下文中运行。我仔细研究了其他答案,协程似乎已经经历了多次迭代 - 我找不到对我来说真正有意义的解释。

我应该注意到我正在 …

java kotlin kotlin-coroutines

7
推荐指数
1
解决办法
4469
查看次数

如何使用带有Spring Data REST的JSONPatch将元素正确添加到集合中?

我有一个非常简单的Spring Data REST项目,它有两个实体,Account和AccountEmail.有一个帐户存储库,但不适用于AccountEmail.帐户与AccountEmail有@OneToMany关系,并且AccountEmail没有反向链接.

更新:我认为这是一个错误.在Spring JIRA上被命名DATAREST-781.我包括了一个演示项目和复制说明.

我可以使用以下调用创建一个帐户:

$ curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"emails":[{"address":"nil@nil.nil"}]}' \ 
  http://localhost:8080/accounts
Run Code Online (Sandbox Code Playgroud)

哪个回报:

{
  "emails" : [ {
    "address" : "nil@nil.nil",
    "createdAt" : "2016-03-02T19:27:24.631+0000"
  } ],
  "_links" : {
    "self" : {
      "href" : "http://localhost:8080/accounts/1"
    },
    "account" : {
      "href" : "http://localhost:8080/accounts/1"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试使用JSONPatch为该帐户添加另一个电子邮件地址:

$ curl -X PATCH \
   -H "Content-Type: application/json-patch+json" \
   -d '[{ "op": "add", "path": "/emails/-","value":{"address":"foo@foo.foo"}}]' \
   http://localhost:8080/accounts/1
Run Code Online (Sandbox Code Playgroud)

这会向集合中添加一个新对象,但由于某种原因,该地址为null:

{
  "emails" : [ { …
Run Code Online (Sandbox Code Playgroud)

spring spring-data spring-data-jpa spring-data-rest

5
推荐指数
0
解决办法
454
查看次数

如何在Cloud Code中关注用户链接?

在afterSave Cloud Code函数中如下:

Parse.Cloud.afterSave("Post", function (request) {

    var post = request.object;

    if (post.has('author')) {
        var author = post.get('author');  
        // author is a Link to a specific Parse.User   
    }

}
Run Code Online (Sandbox Code Playgroud)

我正在尝试获取Post的作者字段指向的Parse用户的电子邮件.

在上面的示例中,author最终包含以下内容:

{
    "__type":"Pointer",
    "className":"_User",
    "objectId":"413wgL9vf1"
}
Run Code Online (Sandbox Code Playgroud)

本质上,我想读取email指针指向的用户的属性.

我尝试过author.get('email'),但失败了,说"未定义".电子邮件在数据库中设置.

这样做的正确方法是什么?我应该使用链接中的objectId编写针对User类的查询,还是有更简单的方法?

parse-platform parse-cloud-code

5
推荐指数
1
解决办法
39
查看次数

为什么固定资源名称AWSEBRDSDatabase对我的Elastic Beanstalk / Spring Cloud AWS应用程序不可用?

我有一个使用Spring Cloud AWS的Spring Boot应用程序。我正在使用Amazon RDS数据库在Elastic Beanstalk上部署应用程序。

根据文档,Elastic Beanstalk为部署应用程序时为您创建的AWS资源提供固定的资源名称。

这意味着axxt7bi97gbjy4,我应该能够使用Elastic Beanstalk资源名称而不是通过其实际实例ID(类似)来引用RDS数据库AWSEBRDSDatabase。我要这样做的原因是,无需手动干预即可配置Elastic Beanstalk环境,从而可以正确配置正确的数据库。

问题:

当我使用Elastic Beanstalk固定资源名称配置Spring Boot / Spring Cloud应用程序的数据源时AWSEBRDSDatabase...

cloud.aws.stack.auto=false
cloud.aws.region.auto=true
cloud.aws.credentials.instanceProfile=true

cloud.aws.rds.AWSEBRDSDatabase.username=user
cloud.aws.rds.AWSEBRDSDatabase.password=password
cloud.aws.rds.AWSEBRDSDatabase.databaseName=ebdb
Run Code Online (Sandbox Code Playgroud)

...我得到以下例外情况...

Caused by: java.lang.IllegalStateException: No database instance with id:'AWSEBRDSDatabase' found. Please specify a valid db instance
        at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.getDbInstance(AmazonRdsDataSourceFactoryBean.java:170) ~[spring-cloud-aws-jdbc-1.0.4.RELEASE.jar!/:1.0.4.RELEASE]
        at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createDataSourceInstance(AmazonRdsDataSourceFactoryBean.java:151) ~[spring-cloud-aws-jdbc-1.0.4.RELEASE.jar!/:1.0.4.RELEASE]
        at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:129) ~[spring-cloud-aws-jdbc-1.0.4.RELEASE.jar!/:1.0.4.RELEASE]
        at org.springframework.cloud.aws.jdbc.rds.AmazonRdsDataSourceFactoryBean.createInstance(AmazonRdsDataSourceFactoryBean.java:45) ~[spring-cloud-aws-jdbc-1.0.4.RELEASE.jar!/:1.0.4.RELEASE]
        at org.springframework.beans.factory.config.AbstractFactoryBean.afterPropertiesSet(AbstractFactoryBean.java:134) ~[spring-beans-4.3.4.RELEASE.jar!/:4.3.4.RELEASE]
      ...
Run Code Online (Sandbox Code Playgroud)

当我使用对特定RDS实例的引用来配置数据源时:

cloud.aws.stack.auto=false
cloud.aws.region.auto=true
cloud.aws.credentials.instanceProfile=true

cloud.aws.rds.axxt7bi97gbjy4.username=user
cloud.aws.rds.axxt7bi97gbjy4.password=password
cloud.aws.rds.axxt7bi97gbjy4.databaseName=ebdb
Run Code Online (Sandbox Code Playgroud)

...一切顺利。

如何修改环境以使Elastic Beanstalk固定资源名称AWSEBRDSDatabase出现?

更新资料

我在.ebextensions中添加了以下内容,并使用EB CLI创建了一个新环境。没有变化,同样的错误。AWSEBRDSDatabase资源不可用。

Resources: …
Run Code Online (Sandbox Code Playgroud)

spring-boot amazon-elastic-beanstalk spring-cloud spring-cloud-aws

5
推荐指数
0
解决办法
298
查看次数

如何在 Spring Cloud Stream 项目中将传入的标头映射为 String 而不是 byte[]?

我有一个使用 Spring Integration DSL 流和 Kafka 绑定器的简单 Spring Cloud Stream 项目。一切正常,但来自 Kafka 的消息头值以byte[].

这意味着我的 SI@Header参数需要是 类型byte[]。哪个有效,但最好将它们作为字符串(我关心的所有入站标头都是字符串值)。

我已经将 Kafka 客户端配置为使用 StringSerializer/StringDeserializer。我假设我还需要以某种方式告诉 Spring Kafka 哪些标头映射为字符串以及使用什么字符编码。

我显然在这里遗漏了一些东西。有小费吗?

spring spring-integration spring-cloud-stream spring-kafka spring-integration-dsl

5
推荐指数
1
解决办法
1851
查看次数

理解 Spring Cloud Stream Kafka 和 Spring Retry

我有一个使用 Kafka binder 的 Spring Cloud Stream 项目,我正在尝试理解并最终自定义 Cloud Stream 使用的 RetryTemplate。

我没有找到很多关于它是如何工作的文档,但是我所阅读的内容使我得出以下假设:

  • Cloud Stream 默认配置并启用 Spring Retry,包括默认的重试和退避策略。
  • 默认情况下, a 中任何未捕获的异常@StreamListener都会触发 Spring Retry
  • Cloud Stream 会以某种方式跟踪每条消息的 RetryContext 信息(如何?我不确定)

这些假设正确吗?

现在,在我的应用程序中,我有一个模式,其中一些消息可以立即处理,但其他消息必须推迟到以后再次尝试(使用指数退避等)。

我应该抛出异常导致 Spring Cloud Stream 在绑定层重试这些消息,还是自己实现重试并跟踪我自己的重试上下文?

如果我应该依赖 Cloud Stream 的重试设置,我应该如何自定义退避策略等?

spring-retry spring-cloud-stream spring-cloud-stream-binder-kafka

5
推荐指数
1
解决办法
2679
查看次数

在使用Spring Data REST存储库时,如何确定RESTful资源的哪些属性在保存之前已更改?

如果我有Spring Data REST发布的以下资源...

{ "status": "idle" }

我怎么能对改变属性值的PATCH或PUT做出反应status?想法是基于属性更改触发一些服务器进程.

理想情况下,这将在保存之前发生,并且可以将新版本的资源与先前持久的版本进行比较.

spring spring-data spring-data-rest

3
推荐指数
1
解决办法
579
查看次数

是否可以在 Spring Cloud Stream 中配置多个绑定到同一个处理器?

我有一个简单的 Spring 集成流程,它绑定到处理器以进行输入和输出。

我已经配置了 Kafka 绑定器来映射输入和输出主题。效果很好。

假设我想将 3 个 Kafka 主题绑定到输入,从而导致 3 个已配置的消费者从三个单独的 Kafka 主题中提取数据,然后由我的 SI 流进行处理。

是否可以将多个 Kafka 主题映射到我的处理器的输入?如果是这样,该配置会是什么样子?

spring-boot spring-cloud-stream spring-cloud-stream-binder-kafka

3
推荐指数
1
解决办法
2189
查看次数