sql >> Database >  >> NoSQL >> MongoDB

Verificatiefout bij toegang tot mongodb via de Spring Boot-app

Ik heb het probleem gevonden. Voor de volledigheid van deze thread, zal ik het antwoord delen, inclusief de code. Het probleem was dat ik de toepassingseigenschap spring.data.mongodb.uri verkeerd gebruikte:het had de gebruikersnaam en het wachtwoord niet in de URI, omdat ik per ongeluk geloofde dat spring.data.mongodb.username en spring.data.mongodb.password dat dekten. Gebruik dus ofwel de uri met gebruikersnaam en wachtwoord, of gebruik expliciet de spring-eigenschappen van host en database (en misschien ook poort). Hier is de code. Het werkt in de spring boot-app met mongoDB-ondersteuning (gebruik initializr of IntelliJ om dat project te maken). Ik heb een 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 ...
}

De gegevens worden gelezen en geschreven via een repository:

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> {
}

De databasenaam, host en referenties staan ​​in het bestand 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

Belangrijk is om de uri niet te mixen met database en gebruikersnaam. Als je uri gebruikt, moet het de gebruikersnaam en het wachtwoord bevatten, zoals dit:

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

Om dit te testen heb ik een eenvoudige Spring command line runner gebruikt:

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);
        }
    }
}

Ik hoop dat deze uitleg anderen helpt die er niet achter konden komen, zoals ikzelf voor een paar dagen.

Bedankt,

Stefan



  1. mongodb en mongomapper

  2. Hoe het .bson-bestandsformaat op mongodb te importeren

  3. gooi nieuwe mangoest.Error.MissingSchemaError(naam); ^ MongooseError:Schema is niet geregistreerd voor modelhandelaar

  4. Vraag MongoDB of het Master is uit een bashscript