小编BiJ*_*BiJ的帖子

spring数据 - Mongodb - findBy嵌套对象的方法

我有两个域对象,

@Document
public class PracticeQuestion {

     private int userId;
     private List<Question> questions;

// Getters and setters
}

@Document
public class Question {

     private int questionID;
     private String type;

// Getters and setters
}
Run Code Online (Sandbox Code Playgroud)

我的JSON文档是这样的,

{
    "_id" : ObjectId("506d9c0ce4b005cb478c2e97"),
    "userId" : 1,
    "questions" : [
        {
            "questionID" : 1,
            "type" : "optional"

         },
        {
             "questionID" : 3,
             "type" : "mandatory"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

我必须更新基于userId和questionId的"类型",所以我在自定义Repository接口中编写了一个findBy查询方法,

public interface CustomRepository extends MongoRepository<PracticeQuestion, String> {

    List<PracticeQuestion> findByUserIdAndQuestionsQuestionID(int userId,int questionID);       
}
Run Code Online (Sandbox Code Playgroud)

我的问题是当我执行此方法时userId为1而questionID为3,它返回整个问题列表而不管questionID.查询方法名称是有效的,还是应该如何为嵌套对象编写查询.

谢谢你的任何建议.

findby mongodb spring-data

23
推荐指数
3
解决办法
5万
查看次数

如何在电子应用程序中使用 Google 的 reCAPTCHA?

Google 的 reCAPTCHA 是特定于域的,因此在 Github 的电子应用程序中使用时,会出现以下错误ERROR for site owner: Invalid domain for site key

可能是因为在电子应用程序中,文件是通过file:///协议加载的,因此在加载验证码时不会发送引用标头。我正在用来electron ./运行该应用程序。

有没有在电子应用程序中加载 reCAPTCHA 的解决方案?

recaptcha electron electron-builder

9
推荐指数
1
解决办法
2755
查看次数

Spring websocket发送给特定的人

我为spring-web app添加了基于自定义令牌的身份验证,并为spring websocket扩展了相同的身份验证,如下所示

public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer {

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.enableSimpleBroker("/topic", "/queue");
        config.setApplicationDestinationPrefixes("/app");
        config.setUserDestinationPrefix("/user");
    }

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/gs-guide-websocket").setAllowedOrigins("*").withSockJS();
    }

    @Override
      public void configureClientInboundChannel(ChannelRegistration registration) {
        registration.setInterceptors(new ChannelInterceptorAdapter() {

            @Override
            public Message<?> preSend(Message<?> message, MessageChannel channel) {

                StompHeaderAccessor accessor =
                    MessageHeaderAccessor.getAccessor(message, StompHeaderAccessor.class);

                if (StompCommand.CONNECT.equals(accessor.getCommand())) {
                    String jwtToken = accessor.getFirstNativeHeader("Auth-Token");
                        if (!StringUtils.isEmpty(jwtToken)) {
                            Authentication auth = tokenService.retrieveUserAuthToken(jwtToken);
                            SecurityContextHolder.getContext().setAuthentication(auth);
                            accessor.setUser(auth);
                            //for Auth-Token '12345token' the user name is 'user1' as auth.getName() returns 'user1'
                        }
                } …
Run Code Online (Sandbox Code Playgroud)

java spring spring-security spring-websocket

8
推荐指数
2
解决办法
2万
查看次数

如何通过javascript将度数符号放在html输入字段中

我有一个文本框

HTML

<input type="text" id="lat" placeholder="Latitude" ng-lat value="9&#176;"> 
Run Code Online (Sandbox Code Playgroud)

它工作正常,因为它完美地显示度数符号,但当我尝试通过jquery设置值时

jQuery的

$("#lat").val("9&#176;")

它显示整个文本而不是度数符号.

javascript jquery html5 ascii

7
推荐指数
2
解决办法
2万
查看次数

如何使用Spring数据mongoDB执行部分更新(MongoOperations)

在我的数据库中,我有一个看起来像这样的文档

{
    "_id" : ObjectId("5864ddd8e38112fd70b89893"),
    "_class" : "com.apic.models.UserReg",
    "name" : "Bijay",
    "email" : "apic.apps@gmail.com",
    "psd" : "16d932a5a3da90cc6afd831016b5a6821f0badf7e2c624159205924433613c3a",
    "activationToken" : "fe8376ea2dbdf61ebc0f11a2361d741ba3178362d5bf876cf47e6a126bc5b39c",
    "verified" : false
}
Run Code Online (Sandbox Code Playgroud)

我也有一个看起来像这样的豆子

public class User {
  @Id
  private int id;
  private String name;
  private String email;

  // getter/setter methods

}
Run Code Online (Sandbox Code Playgroud)

因此,当我尝试调用save()方法时MongoOperations,它会替换所有缺少的属性,如psd,verified和activationToken.

mongoOperations.save(user, COLLECTION);
Run Code Online (Sandbox Code Playgroud)

有什么方法可以更新我的模型类中的现有属性并保留其他属性吗?

mongodb spring-data

5
推荐指数
2
解决办法
3581
查看次数

使用spring在mongodb中存储JSON模式

我是Spring数据和mongodb的新手.我有一个表示JSON模式的JSON对象,我需要使用spring数据将其存储在mongodb中.但JSON模式的问题是JSON Schema的结构是动态的; 例如,下面是两个有效结构完全不同的JSON模式.

{
    "type": "object",
    "properties": {
        "name": {
            "type": "string",
            "minLength": 10
        },
        "age": {
            "type": "integer"
        }
    },
    "required": [
        "name",
        "age"
    ]
}
Run Code Online (Sandbox Code Playgroud)
{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "abc": {
                "type": "boolean"
            },
            "xyz": {
                "$ref": "#/definitions/"
            },
            "asd": {
                "type": "null"
            }
        },
        "required": [
            "abc",
            "xyz"
        ]
    }
}
Run Code Online (Sandbox Code Playgroud)

如何定义JAVA POJO类,以便我可以将上面的JSON映射到已定义的类并将其存储在mongodb中.或者是否可以在Spring中进行CURD操作而不将其映射到POJO类?

spring jsonschema mongodb spring-data spring-data-mongodb

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

Spring mongodb 添加或更新文件列表

我有一个记录列表,例如

[
    {"id":"1", "name":"a", "user":"u1"},
    {"id":"2", "name":"b", "user":"u1"},
    {"id":"3", "name":"c", "user":"u1"}
]
Run Code Online (Sandbox Code Playgroud)

现在根据条目是否已经存在于数据库中,它应该更新或插入文档。对于更新,存在一个条件,即现有user字段的值应与user文档中提供的值相匹配。

当然我可以循环运行列表并使用

mongoOperations.save(...);
Run Code Online (Sandbox Code Playgroud)

但是如果我有一个很大的列表,那么我将不得不为每个条目执行一个我认为效率不高的数据库操作。有没有其他有效的方法来执行此操作?

spring mongodb spring-mongo spring-data-mongodb spring-mongodb

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

禁用 Spring boot websocket MessageBroker 日志的 INFO 级别日志记录

我有一个使用 SockJs 启用 Websocket 的 Spring Boot 应用程序。一切正常,但它一直在控制台中记录以下消息。

2017-09-19 11:04:48.164  INFO 8856 --- [MessageBroker-4] o.s.w.s.c.WebSocketMessageBrokerStats    : WebSocketSession[1 current WS(1)-HttpStream(0)-HttpPoll(0), 3 total, 0 closed abnormally (0 connect failure, 0 send limit, 0 transport error)], stompSubProtocol[processed CONNECT(3)-CONNECTED(3)-DISCONNECT(0)], stompBrokerRelay[null], inboundChannel[pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 45], outboundChannelpool size = 0, active threads = 0, queued tasks = 0, completed tasks = 22], sockJsScheduler[pool size = 4, active threads = 1, queued tasks = 2, …
Run Code Online (Sandbox Code Playgroud)

java logging sockjs spring-boot spring-websocket

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

Spring数据mongodb使用MongoTemplate从文档中删除属性

我有一份文件如下所示

{
    "_id" : ObjectId("5864ddd8e38112fd70b89893"),
    "_class" : "com.apic.models.UserReg",
    "name" : "xxx",
    "email" : "xxx.xxx@xxx.com"
    "activationToken" : "fe8376ea2dbdf61ebc"
}
Run Code Online (Sandbox Code Playgroud)

如何activationToken使用Spring从中删除属性MongoTemplate

spring mongodb spring-data mongotemplate

4
推荐指数
1
解决办法
2940
查看次数

如何从Cordova自定义插件返回字符串

在cordova中创建自定义插件时,execute方法的返回类型为Boolean,但对于我的应用程序,我希望返回一些可以在javascript中使用的String类型。但是由于返回类型是布尔型,所以我不能这样做。

有什么办法可以从该execute方法返回一些值?

java phonegap-plugins cordova cordova-plugins

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

从变量中获取Spring动态HttpStatus

我有一个应用程序,我在其中使用以下命令从控制器返回动态HttpStatus代码: ResponseEntity

return new ResponseEntity<String>("Unrecognised request.", HttpStatus.BAD_REQUEST);
Run Code Online (Sandbox Code Playgroud)

下一个要求是将从数据库加载响应主体和状态代码。代码看起来像

String msg = <<loaded from database>>;
String status = <<loaded from database>>; //type can be changed to int
return new ResponseEntity<String>(msg, <..what to do here ??..>);
Run Code Online (Sandbox Code Playgroud)

不是状态代码将作为字符串/整数从数据库中检索。由于HttpStatus是一个枚举,所以我没有找到其他方法来做到这一点。

我的要求有解决方案吗?

java spring spring-web

0
推荐指数
1
解决办法
1654
查看次数