sql >> Database teknologi >  >> NoSQL >> MongoDB

Godkendelsesfejl ved adgang til mongodb gennem Spring Boot-appen

Jeg fandt problemet. For fuldstændigheden af ​​denne tråd vil jeg dele svaret, inklusive koden. Problemet var, at jeg brugte applikationsegenskaben spring.data.mongodb.uri forkert:den havde ikke brugernavnet og adgangskoden i URI'en, fordi jeg fejlagtigt mente, at spring.data.mongodb.brugernavn og spring.data.mongodb.password dækkede det. Så brug enten uri med brugernavn og adgangskode, eller brug værten og databasen (og måske også port) fjederegenskaberne eksplicit. Her er koden. Det vil fungere i spring boot-appen med mongoDB-understøttelse (brug initializr eller IntelliJ til at oprette det projekt). Jeg har en model:

package net.IndyStef.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.mapping.Document;

@Document(collection = "person")
public class Person {

@Id
private String id;

private String name;
private Integer age;

public Person() {
}

public Person(String id) {
    this.id = id;
}

public Person(String id, String name, Integer age) {
    this.id = id;
    this.name = name;
    this.age = age;
}

... getters/setters omitted for breverity ...
}

Dataene læses og skrives gennem et lager:

package net.IndyStef.repository;

import net.okrongli.model.Person;
import org.springframework.data.mongodb.repository.MongoRepository;

/**
 * Created by IndyStef on 23/08/16.
 */
public interface PersonRepository extends MongoRepository<Person, String> {
}

Databasenavnet, værten og legitimationsoplysningerne er i filen application.properties:

spring.data.mongodb.host=192.168.1.90
spring.data.mongodb.database=people
spring.data.mongodb.username=user
spring.data.mongodb.password=password
#spring.data.mongodb.uri=mongodb://192.168.1.90/people

Vigtigt er ikke at blande uri med database og brugernavn. Hvis du bruger uri, skal den inkludere brugernavn og adgangskode, sådan her:

spring.data.mongodb.uri=mongodb://user:[email protected]/people

For at teste dette brugte jeg en simpel Spring-kommandolinjeløber:

package net.IndyStef;

import net.IndyStef.model.Person;
import net.IndyStef.repository.PersonRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

import java.util.List;

@SpringBootApplication
public class MongoDbTestApplication implements CommandLineRunner {

    public static void main(String[] args) {
        SpringApplication.run(MongoDbTestApplication.class, args);
    }

    @Autowired
    private PersonRepository repository;

    @Override
    public void run(String... args) {

        repository.save(new Person("peter.pan", "Peter Pan", 865));

        List<Person> people = repository.findAll();

        for (Person person: people) {
            System.out.println(person);
        }
    }
}

Jeg håber, at denne forklaring hjælper andre, der ikke kunne finde ud af det, som mig selv i et par dage.

Tak,

Stefan



  1. Hvordan laver man rå mongodb-operationer i mongoose?

  2. Problemer med udjævning af samlingens ydeevne

  3. Hvordan får man de sidste N poster i mongodb?

  4. Mongodb samling med 2 samlinger