Mongodb + Springboot. Как сделать обширную фильтрацию? - PullRequest
0 голосов
/ 10 октября 2019

Мой account.java - это

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
@Getter
@Setter
@ToString
@Document(collection="Account")
public class Account {
    @Id
    private String id;
    private String username;
    private String password;
    private String role;
}

Мой репозиторий для этого

import org.springframework.data.mongodb.repository.MongoRepository;
public interface AccountRepository extends MongoRepository<Account, Integer> {

}

Наконец-то. Для моего контроллера (еще не выполнено)

@PutMapping("/createAccount")
public void createAccount(@RequestBody Account account) {

}

Я хочу следующее:

Если бы я отправил json в теле запроса, например

{
    "username": "Tom",
    "password": "123456",
    "role": "Employee"
}

Затем он создаст объект в коллекции Account с этим свойством, что легко сделать через repository.insert (account). Однако мне нужно проверить определенные фильтры

  1. Необходимо установить все 3 объекта
  2. роль должна быть либо «Сотрудник», «Администратор», либо «Клиент»
  3. Наконец, пользователь еще не в базе данных

В противном случае отправляет ответ 400

Как мне добиться этого с помощью Springboot?

1 Ответ

0 голосов
/ 10 октября 2019
  1. Вы можете использовать @Valid Annotation в контроллере, затем вы можете поместить либо @NotNull, либо @NotEmpty, либо @NotBlank в свой класс Model. Ссылка: https://www.baeldung.com/spring-boot-bean-validation

public void createAccount (@Valid @RequestBody Account account) {

}

public class Account {

    @Id
    @NotNull
    private String id;
    @NotNull
    private String username;
    @NotNull
    private String password;
    @NotNull
    private String role;
}

Вы можете использовать Spring Security Expressions. Ссылка: https://www.baeldung.com/spring-security-expressions-basic

@ PreAuthorize ("hasRole ('ROLE_ADMIN')")

@ PutMapping ("/ createAccount")

публичный void createAccount (учетная запись @RequestBodyаккаунт) {

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...